整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          拿來就能用!Python 每天定時發送一句情話 -

          拿來就能用!Python 每天定時發送一句情話 - 原力計劃

          者 | Baldwin_KeepMind

          出品 | CSDN博客

          我的日記 4月23日 晴

          你三天沒回我的消息,在我孜孜不倦地騷擾下你終于舍得回我了,你說‘nmsl’我想這一定是有什么含義吧!噢!我恍然大悟,原來是尼美舒利顆粒。

          她知道我關節炎,讓我吃尼美舒利顆粒,她還是關心我的但是又不想顯現的那么熱情的。

          天??!她好高冷,我好像更喜歡她了呢!

          你看,雖然女神經常不理我,但是還是會偷偷地關心我,雖然她不直說,但是我都懂。

          唯一的問題就是,我最近很忙,忙到都沒有時間去給女神發“早安”了。不可以!“早安”絕對不能斷,這是我對女神誠摯的愛,女神雖然不會回復我,但是她肯定都記在心里,不回復我肯定是在考驗我!

          作為一名無所不能的程序猿,我立刻就想到為什么不用Python爬取情話,然后每天定時發送給她呢?

          爬取情話

          選取情話資源

          首先我們需要去網上找到合適的情話資源,如果懶得自己找,可以用這個:http://www.1juzi.com/new/150542.html

          分析網頁資源

          1. 定位情話資源

          鼠標放在我們要爬取的情話上快速按下右鍵+檢查(元素)。

          先在就可以看到我們的情話在頁面中是什么位置了。

          2. 定位標簽

          在開發者工具中,我們輕松的舊定位到了我們的情話的標簽,就是上圖紅框里的內容。

          3. 分析請求方式

          在剛才的界面(不要退出開發者模式)下刷新:

          在Network欄目下找到我們請求的那個資源,在他的Headers中找到這個資源請求的方式,這里是GET。

          使用urllib庫獲取資源

          1、安裝urllib庫

          這一步是怕你服務器里沒有urllib2庫,等會兒會造成麻煩才添加上的,如果你沒有添加該庫,請百度添加方法。

          2、請求資源網站

          代碼:

          import urllib.request

          url="http://www.1juzi.com/new/150542.html"
          html=urllib.request.urlopen(url).read
          print(html)

          結果:

          ......

          <h1>??ììò???D??é?°</h1>
          <div class="content"><div class="news"><script type="text/javascript">news1;</script></div>
          <p>1?¢????·????òD?à?×???òaμ?????£?ó?D?à′?ì??μ???×??£</p>
          <p>2?¢°?ê?ì¤??oì3?í?′?????£?°?ê?ò?éúò?êàú¤ú¤????£?°???£??ò2??êàíóé?£</p>
          <p>3?¢ק??è??3£?óè??ò?êà?à°é£?óμ??è??3£??¤??ò?êà??°2?£</p>
          <p>4?¢o??1ê?ò°D?£??ò?¤?±á?ò?±2×óμ?????£?′óó??????aê?£?2?????íá2??àD??£</p>
          <p>5?¢?òoóà′??á???£??ò2?μ¢?ó??£??1?áóD±eè?μ¢?ó??£????ò2??êD?£??1ê??òà′μ¢?ó??°é?£</p>
          <p>6?¢??μ???μ???ò??ì?ò?í2??a?ù′?£?óDμ???ê?μ?D?ì?£?ê?????±?á??ò£?ò??°?ò′ó2??á?a?ùμ??£?ùè?óDò???è??üè??òD??ê?é??μ???±????íê????£</p>
          <p>7?¢???òμ??é?é?÷à?è¥?′o£2?òa?′à′??òa??à′?£</p>
          <p>8?¢??ò?ìì???a??D?ì?£???ò??ì??±????D?ˉ£???ò??????a??μ£D??£óD??μ??D????o??£</p>
          <p>9?¢2??ò?ùìy?é?è£?μ±?ò??è?£?òò?a??àá?12?×??£</p>
          ......

          小問號,你是否有很多朋友?

          我們爬下來的都是亂碼,發給女神一堆亂碼,女神可能還會以為是我們給她發的暗語,說不定還要花時間去尋找解密方法,想想都累,不能這個樣子!

          其實出現亂碼的原因主要網頁的編碼方式和我們爬取程序的編碼方式不一樣造成的,只要找到網頁的編碼方式就好。

          3、設置解碼類型

          有3種方式:

          1.從網頁Content-Type中獲取編碼方式

          2.第三方庫智能識別編碼,常用chardet等

          3.猜測編碼

          我們這里其實在請求頭的Content-Type里有編碼類型,但是為了保險起見,也是為了能應用到更多的資源網站,這里演示以下chardet的用法,猜測編碼的使用請自行百度。

          chardet獲取編碼類型

          代碼:

          import urllib.request

          import chardet
          url="http://www.1juzi.com/new/150542.html"
          html=urllib.request.urlopen(url).read
          print("html頭中的charset:", chardet.detect(html))

          結果:

          /usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py
          html頭中的charset:{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
          Process finished with exit code 0

          Get?。?!編碼方式為GB2312!

          設置解碼

          代碼:

          import urllib.request
          import chardet

          url="http://www.1juzi.com/new/150542.html"
          html=urllib.request.urlopen(url).read
          charset=chardet.detect(html).get("encoding")
          htmlText=html.decode(charset,errors='ignore')
          print(htmlText)

          結果:

          ......

          <h1>每天一句小情話</h1>

          <div class="content"><div class="news"><script type="text/javascript">news1;</script></div>

          <p>1、將你放進我心里最重要的位置,用心來刻你的名字。</p>

          <p>2、愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。</p>

          <p>3、拽你入懷,予你一世相伴,擁你入懷,護你一世平安。</p>

          <p>4、何止是野心,我預謀了一輩子的念想,從遇見你開始,不見黃土不死心。</p>

          <p>5、我后來想了想,我不耽誤你,還會有別人耽誤你,那我不甘心,還是我來耽誤你吧。</p>

          <p>6、見到你的那一刻我就不知所措,有的只是的心跳,是你改變了我,以前我從不會這樣的。假如有一個人能讓我心甘情愿地改變那就是你。</p>

          <p>7、陪我到可可西里去看海不要未來只要你來。</p>

          <p>8、每一天都為你心跳,每一刻都被你感動,每一秒都為你擔心。有你的感覺真好。</p>

          ......

          哦吼!搞定!

          4、封裝代碼

          剛才我們已經實現了資源的獲取,但是這樣的代碼用起來太不方便了,我們把它封裝在方法里:

          ......
          import urllib.request
          import chardet

          def getHtml(url):
          """
          獲取網頁html文本資源
          :param url: 網頁鏈接
          :return: 網頁文本資源
          """
          html=urllib.request.urlopen(url).read
          charset=chardet.detect(html).get("encoding")
          htmlText=html.decode(charset, errors='ignore')
          return htmlText

          解析網頁資源

          解析網頁的話,需要第三方插件Beautiful Soup來提取 xml 和 HTML 中的數據。

          獲取content節點內容

          我們想要的資源都在一個class為”content“的div節點下,我們現在先獲取這個節點的所有內容。

          部分代碼:

          soup=BeautifulSoup(htmlText,"html.parser")
          "獲取content節點的內容"
          div_node=soup.find('div', class_='content')
          print(div_node.get_text)

          結果:

          /usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py

          <bound method Tag.get_text of <div class="content"><div class="news"><script type="text/javascript">news1;</script></div>

          <p>1、將你放進我心里最重要的位置,用心來刻你的名字。</p>
          <p>2、愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。</p>
          <p>3、拽你入懷,予你一世相伴,擁你入懷,護你一世平安。</p>
          <p>4、何止是野心,我預謀了一輩子的念想,從遇見你開始,不見黃土不死心。</p>
          <p>5、我后來想了想,我不耽誤你,還會有別人耽誤你,那我不甘心,還是我來耽誤你吧。</p>
          ......

          <u>本文地址:<a >每天一句小情話</a>http://www.1juzi.com/new/150542.html</u>
          <li class="page"><a href="/aiqingyulu/">上一頁</a><span class="current">1</span><a href="/new/150543.html">2</a><a href="/new/150541.html">下一頁</a></li>
          </div>
          Process finished with exit code 0

          2.4.3. 獲取p節點內容

          上一步我們已經獲取到了我們的主要內容,然后總結可以看出我們想要的文本內容在P節點中,那么現在就來獲取它。

          部分代碼:

          soup=BeautifulSoup(htmlText,"html.parser")
          "獲取div節點的內容"
          div_node=soup.find('div', class_='content')
          "獲取P節點內容"
          p_node=div_node.find_all('p')
          for content in p_node:
          print(content.get_text)

          結果:

          /usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py

          1、將你放進我心里最重要的位置,用心來刻你的名字。
          2、愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。
          3、拽你入懷,予你一世相伴,擁你入懷,護你一世平安。
          4、何止是野心,我預謀了一輩子的念想,從遇見你開始,不見黃土不死心。
          5、我后來想了想,我不耽誤你,還會有別人耽誤你,那我不甘心,還是我來耽誤你吧。
          ......
          69、有時,愛也是種傷害,殘忍的人句子大全http://Www.1juzI.coM/,選擇傷害別人,善良的人,選擇傷害自己。
          ......
          Process finished with exit code 0

          4、處理數據

          注意一下第69劇,這里面有網站的鏈接,把這個一起發給女神不就露餡了么,現在得想辦法給她刪掉。同時情話前面的編號也得刪掉。

          刪除特定標簽

          我們會查看一下數據就會發現,所有的鏈接都是在U標簽里的,那我們可以直接在獲取到div標簽內容后就把u標簽刪掉

          "刪除特定標簽u"
          [s.extract() for s in div_node('u')]

          刪除序號

          我們發現,序號與情話之間是用頓號分割的,那么我們可以將每個P標簽下的內容用split分割并且取出第二個元素就好了。

          部分代碼:

          "獲取P節點內容"
          p_node=div_node.find_all('p')
          for content in p_node:
          "以’、‘分割,并且取出第2個元素"
          text=content.get_text.split("、",1)[1]
          print(text)

          結果:

          /usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py

          將你放進我心里最重要的位置,用心來刻你的名字。
          愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。
          拽你入懷,予你一世相伴,擁你入懷,護你一世平安。
          何止是野心,我預謀了一輩子的念想,從遇見你開始,不見黃土不死心。
          我后來想了想,我不耽誤你,還會有別人耽誤你,那我不甘心,還是我來耽誤你吧。
          ......
          Process finished with exit code 0

          nice啊,到這一步你已經把我們需要的情話都提取出來了!??!

          封裝數據備用

          這樣一句一句的也不好處理??!不如把它放到list里,等下定時任務的時候可以用的時候取出來就好。

          部分代碼:

          sentenceList=list
          ......
          "獲取P節點內容"
          p_node=div_node.find_all('p')
          for content in p_node:
          "以’、‘分割,并且取出第2個元素"
          text=content.get_text.split("、", 1)[1]
          "追加到list尾部"
          sentenceList.append(text)

          print(sentenceList):

          /usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/spider/Spider.py

          ['將你放進我心里最重要的位置,用心來刻你的名字。', '愛是踏破紅塵望穿秋水;愛是一生一世冥冥輪回;愛你,我不問理由。', '拽你入懷,予你一世相伴,擁你入懷,護你一世平安。', '何止是野心,我預謀了一輩子的念想,從遇見你開始,不見黃土不死心。', ......]

          Process finished with exit code 0

          5、封裝(爬蟲代碼最終)

          爬蟲是做好了,但是總覺得乖乖的,我等下還得在其他地方用,不如這里以面向對象的思想把爬蟲封裝一下。

          import urllib.request
          from bs4 import BeautifulSoup
          import chardet

          def __getHtml(url):
          """
          私有方法:獲取網頁html文本資源
          :param url: 網頁鏈接
          :return: 網頁文本資源
          """
          html=urllib.request.urlopen(url).read
          charset=chardet.detect(html).get("encoding")
          htmlText=html.decode(charset, errors='ignore')
          return htmlText

          def __sloveHtml(htmlText):

          """
          私有方法:解析HtmlText
          :param htmlText: 傳入的資源
          """
          sentenceList=list
          soup=BeautifulSoup(htmlText, "html.parser")
          "獲取content節點的內容"
          div_node=soup.find('div', class_='content')

          "刪除特定標簽u"
          [s.extract() for s in div_node('u')]

          "獲取P節點內容"
          p_node=div_node.find_all('p')
          for content in p_node:

          "以’、‘分割,并且取出第2個元素"
          text=content.get_text.split("、", 1)[1]
          "追加到list尾部"
          sentenceList.append(text)
          return sentenceList

          def getSentenceList(url):

          """
          Spider提供的公用方法,提供情話list
          :param url: 獲取情話的地址
          :return: 情話list
          """
          return __sloveHtml(__getHtml(url))

          爬蟲總結

          這一部分主要用到的類庫有:BeautifulSoup,urllib,chardet。

          主要思想:封裝

          手機短信發送發送

          本來想用微信或者QQ發送來著,但是時隔兩年,qqbot、itchat、wxpy等第三方庫都失效了,沒辦法就來用手機短信發送好了。

          1. Twilio

          Twilio是一個做成開放插件的電話跟蹤服務(call-tracking service)

          Twilio公司致力于幫助開發者在其應用里融入電話、短信等功能,該公司周二又推出了一項稱為Twilio Client的新服務,可幫助開發者整合靈活而低成本的網絡電話(VoIP)功能。

          VoIP即Skype和谷歌電話等服務使用的技術,要提供VoIP服務通常需要準備相應的基礎設備,而Twilio Client免除了開發者的這一麻煩,可讓他們便捷地在應用里加入網絡電話元素。

          安裝

          安裝過程比較簡單,直接pip就好:

          sudo pip3 install twilio

          等待安裝完成

          Successfully built twilio
          Installing collected packages: PyJWT, twilio
          Successfully installed PyJWT-1.7.1 twilio-6.38.1

          注冊并獲取三個重要參數

          參考文章:https://zhuanlan.zhihu.com/p/67716042

          簡單代碼實現發送短信實驗

          代碼:

          from twilio.rest import Client # 導包
          account_sid='你的account_sid'
          auth_token='你的auth_token'
          client=Client(account_sid, auth_token)
          message=client.messages.create(
          from_='+×××××××××',
          body='親愛的H,以后我每天都會給你發送一條信息哦!??!',
          to='你要發送到的手機號(以+86開頭)'
          )
          print(message.sid)

          控制臺輸出:

          /usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/qqsend/Send.py
          SMfe64f40f2ac24b8ca82121d57147312c
          Process finished with exit code 0

          手機接收短信:

          OK!到這里我們已經簡單實現了發送短信的功能,現在要去把這個功能封裝一下。

          實現發送短信的功能

          封裝代碼:

          from twilio.rest import Client # 導包

          def sendSMSMsg(content, tel):

          """
          向某個手機號發送短信內容
          :param content: 短信內容
          :param tel: 手機號
          """
          account_sid='你的account_sid'
          auth_token='你的auth_token'
          client=Client(account_sid, auth_token)
          client.messages.create(
          from_='+18634171608',
          body=content,
          to=tel
          )
          print('Send :', content, 'to tel:', tel, 'syccessfully!!!')
          if __name__=='__main__':
          sendSMSMsg("Hello?" ,"+×××××××××")

          測試結果:

          /usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/qqsend/Send.py
          Send : Hello? to tel: +8618436354553 syccessfully!!!
          Process finished with exit code 0

          手機接收短信:

          發送短信總結

          1. 注冊twilio

          2. 獲取三個參數:account_sid,auth_token,TRIAL NUMBER

          3. 引入twilio

          4. 設置你要發送到的手機號和內容

          操作還算是比較簡單的,這部分主要用到twilio庫。

          定時發送短信

          這一步算是我們的主程序了,在這一部分里,我們要使用之前的代碼先獲取情話list,再設置定時任務,每天固定的時間點把短信發到女神手機上。

          Python定時任務

          Python 中的定時任務框架還挺多的,我們現在的需求是每天早上8點鐘執行一個任務,在不到這個時間的時候不發送信息,為了簡便理解,我打算直接循環掃描系統當前時間,如果到了我們需要的那個時間點,就發送,不到的時候就一直掃描

          代碼實現

          import time
          while True:
          # 刷新
          time_now=time.strftime("%H:%M:%S", time.localtime)
          # 此處設置每天定時的時間
          if time_now=="15:29:00":
          # 需要執行的動作
          print('定時任務執行一次')
          time.sleep(2) # 因為以秒定時,所以暫停2秒,使之不會在1秒內執行多次

          結果:

          /usr/bin/python3.7 /home/baldwin/PycharmProjects/IAmADog/DoWork.py

          定時任務執行一次
          Traceback (most recent call last):
          File "/home/baldwin/PycharmProjects/IAmADog/DoWork.py", line 7, in <module>
          time_now=time.strftime("%H:%M:%S", time.localtime)
          KeyboardInterrupt
          Process finished with exit code 1

          我是15:28:00的時候運行程序的,在設置時刻確實是執行了程序。

          下面的異常是因為我手動退出了程序,這里不用管他。

          具體實現發送情話

          我們這里整理一下具體需求:

          1.定時間點發送(上面已經實現了)

          2.每次發送的時候從list中取出一個句子,下一次取出下一條,不能重復

          3.list中的句子發送完畢之后要發短信通知我

          取句子

          思路:設置一個全局變量index,代表著下一條要發送的句子的下標,每次發送短信后,下標要增加1

          發送完畢通知管理員

          思路:每次進入任務但是發送短信之前都要比較index的值與list的長度(現在想起來,設計程序的時候用棧來儲存數據會更好),如果index已經越界,直接給管理員發短信通知。

          實現

          from spider import Spider
          from send import Send
          import time
          TIME_TO_DO='08:30:00' # 發送時間點
          MSG_SUFFIX='\n來自你的小可愛——Baldwin' # 短信后綴
          SOURCE_URL='http://www.1juzi.com/new/150542.html' # 情話資源地址
          SEND_TO_TEL='+8618436354553' # 女神的手機號
          SEND_TO_ME='舔狗,給女神發的短信已經用光了,快來更新?。?!'
          MY_TEL='+8618436354553' # 舔狗手機號
          index=0 # 下一條短信的下標
          sentenceList=Spider.getSentenceList(SOURCE_URL) # 情話列表
          while True:
          # 刷新
          time_now=time.strftime("%H:%M:%S", time.localtime)
          # 此處設置每天定時的時間
          if time_now==TIME_TO_DO:
          # 需要執行的動作
          # 判斷當前list有沒有用光
          if index >=len(sentenceList):
          # 用光了就短信通知我
          Send.sendSMSMsg(SEND_TO_ME, MY_TEL)
          # 跳出
          break
          # 給女神發短信
          content=sentenceList[index] + MSG_SUFFIX
          Send.sendSMSMsg(content, SEND_TO_TEL)
          # 下標加一
          index +=1
          # 因為以秒定時,所以暫停2秒,使之不會在1秒內執行多次
          time.sleep(2)

          debug模式下的各項測試:

          短信發送測試

          在idea debug模式下可以對time_now參數進行設置,把它設置成我們在前面要發送短信的那個時間點,成功進行了短信發送:

          管理員通知測試

          同樣的在debug模式下,設置index的值為len(sentenceList),程序進入通知管理員模塊中,這里不再演示。

          封裝

          from spider import Spider
          from send import Send
          import time
          TIME_TO_DO='08:30:00' # 發送時間點
          MSG_SUFFIX='\n來自你的小可愛——Baldwin' # 短信后綴
          SOURCE_URL='http://www.1juzi.com/new/150542.html' # 情話資源地址
          SEND_TO_TEL='+8618436354553' # 女神的手機號
          SEND_TO_ME='舔狗,給女神發的短信已經用光了,快來更新?。。?
          MY_TEL='+8618436354553' # 舔狗手機號

          def doSend:
          index=0 # 下一條短信的下標
          sentenceList=Spider.getSentenceList(SOURCE_URL) # 情話列表
          while True:
          # 刷新
          time_now=time.strftime("%H:%M:%S", time.localtime)
          # 此處設置每天定時的時間
          if time_now==TIME_TO_DO:
          # 需要執行的動作
          # 判斷當前list有沒有用光
          if index >=len(sentenceList):
          # 用光了就短信通知我
          Send.sendSMSMsg(SEND_TO_ME, MY_TEL)
          # 跳出
          break
          # 給女神發短信
          content=sentenceList[index] + MSG_SUFFIX
          Send.sendSMSMsg(content, SEND_TO_TEL)
          # 下標加一
          index +=1
          # 因為以秒定時,所以暫停2秒,使之不會在1秒內執行多次
          time.sleep(2)

          # 主程序入口
          if __name__=='__main__':
          doSend

          小總結

          這部分主要用到的模塊:time,然后記得要把前兩個我們自己做的模塊導入進來。

          總結

          這個程序相對來說還算是比較容易的,只要跟著文章一步步來基本上不互出問題。

          最后只要運行我們最后一個模塊中主程序入口就好了,你也可以按照自己需求修改配置達到不同的效果。

          我現在就去告訴女神去。

          嘿嘿!女神秒回的,開心!

          項目地址:https://gitee.com/dikeywork/IAmADog

          版權聲明:本文為CSDN博主「Baldwin_KeepMind」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

          原文鏈接:

          https://blog.csdn.net/shouchenchuan5253/article/details/105753596

          今日福利

          遇見大咖

          由 CSDN 全新專為技術人打造的高端對話欄目《大咖來了》來啦!

          CSDN 創始人&董事長、極客幫創投創始合伙人蔣濤攜手京東集團技術副總裁、IEEE Fellow、京東人工智能研究院常務副院長、深度學習及語音和語言實驗室負責人何曉冬,來也科技 CTO 胡一川,共話中國 AI 應用元年來了,開發者及企業的路徑及發展方向!

          為產品經理的基本能力要求之一,所有的產品經理都要求會使用Axure畫原型。這篇文章,作者就分享了Axure 這款軟件的基本知識,供各位參考學習。

          Axure是產品經理用來繪制原型的工具,在快速迭代快速發展的當下,原型能驗證設計的概念,將現有的需求轉化為具體可視方案,讓團隊成員可以更好的理解需求方案。

          這期內容先來熟悉一下Axure的操作界面。

          一、操作界面

          1. 頁面

          AxureRP文件在頁面窗格中,在“頁面”窗格中進行管理。

          單擊“頁面”窗格右上方的“添加頁面”按鈕,添加頁面。

          在“頁面”窗格中雙擊頁面名稱,打開畫布。

          2. 畫布

          畫布是設計原型的地方,可以根據自己的想法設計原型圖,也可以根據設備設置頁面尺寸。

          3. 元件庫

          AxureRP預先安裝了基本元件、表單元件、菜單表格、標記元件等,除此之外,還可以創建自己的元件庫或添加其他人創建的元件庫。

          從“元件庫”窗格中拖動,也可以使用“插入菜單”中的選項來添加文本,圖像和形狀,將元件添加到畫布。

          雙擊,或者選中元件按Enter,編輯元件文本。

          在“樣式”窗格中可以改變元件的外觀,例如,填充顏色,字體等,當然通過畫布頂部樣式工具欄也可以實現。

          二、交互效果

          在“交互”窗格中給拖到畫布中的元件添加交互。

          1. 鏈接到另一個頁面

          1.在“頁面”窗格中,添加一個新頁面,現在應該有兩個頁面,第1頁和第2頁。

          2.在第1頁上,將按鈕元件從“元件庫”窗格拖到畫布上,選中按鈕,在“交互”窗格中單擊“單擊”或“點擊”→“打開鏈接”,在列表中選擇第2頁,然后單擊確定。

          3.在瀏覽器中打開原型,單擊按鈕會轉到第2頁。

          2. 顯示和隱藏元件

          在頁面上動態顯示和隱藏元件。

          3. 交互樣式效果

          使用樣式效果更改將鼠標懸停,單擊并進行其他操作時的部件的視覺外觀。

          4. 分享原型

          單擊界面右上方的“共享”、“發布”按鈕,并指定名稱和密碼,將原型分享給開發或其他同學。

          三、AxureRP界面環境

          在AxureRP界面環境的中心是畫布,可以通過排列元件來創建圖表,畫布周圍是工具欄和工具面板,允許自定義圖表樣式和交互并與其他人分享。

          *提示:可以在視圖菜單中切換界面的窗格和工具欄。

          1. 界面環境地圖

          1. 主工具欄和樣式工具欄:執行常用操作,如管理元件、設置元件樣式和發布,可以在選擇模式、連接器模式和繪圖工具之間更改光標工具。
          2. 畫布:在這個環境中拖放布局元件,更改元件顏色和尺寸、添加網格和參考線,以及切換標尺的可見性。
          3. 頁面:添加、刪除、重命名和管理文件中的頁面。
          4. 概要:查看當前圖表上所有可搜索、可排序和可篩選的部件、母版及動態面板列表。
          5. 元件庫:例如按鈕、圖像、文本和形狀等元件的庫,從“元件庫”窗格中拖動元件,然后放到畫布上,通過“元件庫”窗格,可以在元件庫之間切換及加載其他元件庫,甚至可以創建自己的自定義元件庫,還可以從本地添加圖像文件夾。
          6. 母版:可以在整個文件中重復使用的元件集合,可以進行添加、刪除、重命名和管理母版等操作。
          7. 樣式:編輯元件和頁面樣式。
          8. 交互:在頁面或選定元件上添加和編輯交互及其他交互屬性。
          9. 注釋:添加、編輯元件和頁面注釋。

          2. 自定義環境

          界面窗格可以被拖放到任何地方,甚至可以變成自由浮動的窗口,或者放在綠松石熱區,固定在Axure界面中的新位置。

          3. 自定義主工具欄

          通過點擊:視圖→工具欄→自定義主工具欄更改顯示在主工具欄中的圖標,或右鍵單擊工具欄中的空白區域,在上下文菜單中選擇自定義工具欄。

          在出現的模式中,選中要包含在主工具欄中的項目,對于極簡界面,可以取消選中右下角的顯示文本復選框圖標隱藏工具欄中的圖標標簽。

          單擊右上角的恢復默認值,可以將工具欄恢復成默認設置。

          4. 黑暗模式

          在應用程序首選項中將AxureRP切換為深色用戶界面模式,該選項位于頂部菜單中的以下位置之一,具體取決于操作系統:

          在畫布選項卡的外觀下拉菜單中選擇暗模式,Mac用戶還可以選擇“使用系統設置”,讓AxureRP與操作系統界面設置匹配。

          5. 查看和分享原型

          AxureRP會將文檔轉換為HTML,CSS,JavaScript和圖像文件,統稱為“HTML輸出”,在瀏覽器中查看AxureRP原型并與之交互。

          6. 預覽

          在設計原型的時候,需要定期在瀏覽器中測試進度,單擊界面右上角的預覽按鈕以查看當前在畫布上打開的頁面。

          預覽時,瀏覽器中的原型鏈接到RP文件,文件更改時,在瀏覽器中刷新原型查看更改內容。

          *預覽僅在當前計算機上可見,無法從任何其他設備訪問,如果需要在其他設備上查看原型或與其他設備共享原型,需發布到AxureCloud或保存并共享原型HTML輸出的本地副本。

          7. 控制臺

          預覽原型時,可以使用原型播放器的“控制臺”面板來測試交互并進行故障排除。

          8. 預覽選項

          默認情況下,預覽原型在操作系統的默認瀏覽器中打開,并且原型播放器處于默認狀態,在發布→預覽選項中可以更改設置。

          9. 發布到AxureCloud

          如果與其他同學共享原型,可以通過單擊AxureRP界面右上角的分享按鈕或通過app,Axure,Cloud的axurecloudweb發布。

          發布成功會獲得一個已發布原型的鏈接,可以與其他人共享并在任何具有web瀏覽器的設備上使用該鏈接。

          10. 快捷鍵

          Axure官方全部快捷鍵,以及快捷鍵對應功能的中英文名稱,實際原型設計中,由于快捷鍵操作便捷性的差異,和每個人使用習慣的不同,應用到的快捷鍵并不會太多,而且不同人也各不相同,以下快捷鍵選擇性使用。

          11. 自動保存的備份文件

          AxureRP自動保存打開的RP文件的備份副本,恢復文件的早期版本或恢復未保存的更改,可以訪問備份文件。

          默認情況下,AxureRP每15分鐘保存一次備份副本,并將備份文件保存在電腦上30天。

          12. 恢復自動保存的備份文件

          1.轉到文件→從備份恢復文件,在打開的對話框中,可以找最近保存的備份文件列表。

          2.在對話框左上角,輸入1到30之間的值,查看備份天數,默認顯示5天。

          3.雙擊列表中的備份文件恢復文件,打開文件之前,系統將提示保存文件。

          *提示:建議使用新文件名保存恢復文件,避免要蓋最近保存的文件。

          13. 導入變更

          一旦恢復并保存了備份文件,可以直接從恢復RP文件繼續工作,或者,按照以下步驟更改從備份文件導入原始文件:

          1. 打開原始的RP文件。
          2. 使用文件→從RP文件導入菜單選項,打開導入對話框。
          3. 在出現的文件瀏覽器中選擇恢復的備份RP文件。
          4. 使用導入向導中的選項從備份文件中導入所需的更改。

          14. 備份首選項

          15. 更改備份頻率

          默認情況,AxureRP每15分鐘保存一次所有打開的RP文件副本。

          在文件→備份設置,對話框中輸入新的備份間隔值,可以設置為低至5分鐘,高至60分鐘。

          16. 禁用備份

          在文件→備份設置,取消選中啟用備份復選框,可以禁用備份功能。

          *提示:建議不要禁用備份,電腦崩潰或斷電,可能會導致文件丟失。

          四、管理元件

          1. 在畫布上定位元件

          從元件庫窗格中拖拽元件可以將元件添加到畫布,或者使用界面左上角的插入菜單中的選項繪制多種元件形狀。

          使用鼠標可以將元件或元件組拖放到適當位置,使用上下左右鍵將元件在畫布上微移,也可以使用頂部工具欄或樣式窗格中的X和Y字段選擇畫布坐標。

          當元件拖動到畫布上時,會自動捕捉到畫布網格、已設置的所有輔助線以及附近的其他元件。

          2. 一次定位多個元件

          在畫布上選擇多個元件時,可以更改整個選區的坐標,也可以重新定位選區內的每個元件:

          設置頂部工具欄中的X和Y字段,會將選中的元件移到畫布上的目標坐標,并且每個元件將保持與目標坐標的相對距離。

          *提示:選中元件位于畫布上的不同位置時,樣式窗格中的X或Y字段將為空白。

          3. 調整元件大小

          在畫布上選中元件并拖動手柄,可以調整元件大小,拖動時可以按住SHIFT維持元件的長寬比。

          使用頂部工具欄或樣式窗格中的W和H字段為元件選擇尺寸,在W和H字段之間單擊保持長寬比圖標,可以維持元件的長寬比。

          或者,在其中一個字段中輸入新值后按SHIFT+ENTER一次調整多個元件的大小。

          4. 一次調整多個元件的大小

          在畫布上選中多個元件時,選擇按比例整體調整整個選區的大小,也可以選擇調整單個元件的大小。

          頂部工具欄中的W和H字段,可以調整整個選區的大小,設置所選內容本身的寬度和高度,按比例調整所選元件的大小和位置,以適合所選尺寸。

          樣式窗格中的W和H字段,也可以調整每個元件的大小,例如,將每個元件的寬度設置為150px。

          *提示:當選中的元件尺寸不同時,樣式窗格中的W和H字段將為空白。

          5. 距離輔助線/紅線

          在畫布上移動元件時,會出現紅色輔助線,顯示元件與附近的其他元件之間的距高,這些輔助線還會顯示何時邊緣對齊或中點對齊。

          6. 元件命名

          默認情況下,元件沒有命名,在概要窗格和其他顯示元件名稱的位置,未命名元件在括號中顯示元件型標識(矩形)、(圖像)等。

          如果在沒有名稱的元件上輸入文本,它將顯示文本的前幾個單詞,例如:默認段落元件在概要窗格中顯示Loremipsumdolorsi.

          在概要窗格中雙擊元件,可以給元件命名,還可以選中元件,在樣式、交互或注釋窗格的頂部輸入名稱。

          7. 元件分組

          為方便將多個元件命名、定位和交互,可以將元件設置為一個分組。

          選擇兩個或多個元件,單擊頂部工具欄中的組合。

          選擇一組元件,單擊取消分組,拆分一組元件。

          8. 層順序/深度順序/前后順序

          當兩個或多個元件重疊時,層次順序較高的元件顯示在前面,層次順序較低的元件顯示在后面。

          層順序(或“z-index”)決定在Web瀏覽器中使用TAB鍵導航的元件(如:文本字段和下拉列表之類的元件)的TAB順序,TAB鍵首先使最后一個元件聚焦,逐漸向前移動。

          在概要窗格查看元件的特定深度/z-index位置,默認情況下,元件是從前到后排序的,因此窗格頂部的元件在前面,底部的元件在后面。(可以通過單擊概要窗格右上方的排序和過濾器圖標來更改排序方向。)

          9. 重新排序元件

          在概要窗格中上下拖動元件,更改元件的深度/z-index位置,頂部工具欄中也有用于實現此功能的按鈕,使用頂層按鈕將選定的元件移動到圖的最前面,然后使用底層按鈕將元件移動到最后面,還可以自定義頂部的工具欄,選中上移一層和下移一層按鈕,這些按鈕可向前/向后移動選中元件,一次一層。

          10. 折疊和展開元件

          在概要窗格中切換元件或者組名稱旁邊的箭頭,可以折疊或展開元件組(或具有嵌套結構的元件,例如動態面板和中繼器)

          還可以單擊概要窗格右上角的排序和篩選圖標,選擇折疊/展開全部以同時折疊或展開所有組。

          11. 對齊和分布元件

          頂部工具欄中的對齊和分布工具可用于自動組織選中的一組元件。

          對齊工具可以將兩個或多個選定的元件在左側,中心或右側水平對齊,或在頂部,中間或底部垂直對齊,新位置基于選擇的第一個元件的位置,必須至少選擇兩個元件才能對齊。

          分布工具可以水平或垂直地均勻分布三個或更多選中元件的位置,在分布元件之前,必須至少選擇三個元件。

          *提示:可以自定義頂部工具欄將這些選項合并到兩個圖標下,對齊和分布。

          12. 將元件鎖定到畫布

          被鎖定元件,不能在畫布上拖動更改大小和位置,此時,用頂部工具欄或樣式窗格中的字段才可以改變,這種配置有助于防止被鎖定的元件意外移動或調整大小。

          右鍵單擊元件,在上下文菜單中的鎖定下選擇適當的選項,支持鎖定或解鎖元件,頂部工具欄鎖定和解鎖圖標支持自定義。

          *提示:鎖定的元件具有紅色邊框,如果無法拖動或調整特定元件的大小,可以查看元件邊框顏色查看元件是否被鎖。

          13. 隱藏元件

          用“顯示”操作來動態顯示窗口,隱藏元件,在Web瀏覽器中不可見。

          選中元件,單擊頂部工具欄或樣式面板中的隱藏圖標,可以隱藏元件,隱藏元件在畫布上顯示為黃色,還可以在頂部菜單的視圖→遮置中切換遮置。

          五、元件樣式

          1. 樣式屬性

          在樣式窗格可以自定義元件的外觀樣式。

          2. 不透明度

          用滑塊或數字輸入字段設置目標元件的整體不透明度,值與填充顏色和文本顏色不透明度值一起疊加顯示。

          3. 排版

          字體設置:通過設置元件的字體,字型,字號和字體顏色來控制元件文本的樣式。

          行距:調整文本行之間的間距,可以設置特定的像素值,也可以選擇自動以使用默認間距。

          字符間距:調整元件文本中各個字符之間的間距,可以設置一個特定值(以十分之一像素為單位),也可以選擇0以使用默認間距。

          其他文本選項:此菜單包括以下格式選項:

          • 項目符號列表、粗體、斜體、下劃線和刪除線。
          • 基線:向上或向下移動選定文本的基線,從正常、上標和下標中進行選擇。
          • 字母大小寫:轉換所選文本中所有字符的大小寫,從正常、大寫和小寫中進行選擇。

          文本陰影:向元件文本中的每個字符添加陰影。

          對齊:六個對齊選項控制元件文本在其邊框內的對齊,可以控制水平對齊和垂直對齊。

          4. 填充

          顏色:設置元件的填充顏色,元件填充顏色可以是實心的,也可以包括線性或徑向漸變。

          圖像:設置形狀元件的填充圖像以及圖像的對產、縮放和平鋪。

          6. 邊框

          顏色:設置線條元件或二維元件輪廓的顏色和不透明度,線條顏色可以是實心的,也可以包括線性漸變或徑向漸變。

          厚度:設置直線元件或二維元件輪廓的厚度。

          模式:設置元件輪廓的模式。

          可見性:控制矩形元件的哪些邊顯示邊框

          箭頭:將箭頭添加到行元件或開放形狀的一端或兩端。

          7. 陰影

          給選中的元件添加外部或內部陰影,可以控制陰影的X和Y偏移,模糊和顏色。對于內部陰影,還可以控制陰影的擴散。

          8. 角

          用數字半徑字段將矩形元件的角弄圓。(也可以通過選擇畫布上的元件并拖動左上角的黃色三角形來執行操作。)

          9. 邊距

          這些數字控件確定元件的文本和相應的邊框(左,上,右和下)之間的最小間距(以像素為單位)。

          10. 元件樣式

          元件樣式屬性可以將單個元件樣式應用于多個元件,統一元件樣式,如果更改選擇元件樣式中的屬性之一,則更改將應用于使用該樣式的所有元件。

          選擇元件,在樣式窗格或樣式工具欄的元件樣式下拉列表中選擇元件樣式,可以將元件樣式應用于一個或多個元件。

          可以通過項目→元件樣式管理器,或單擊樣式窗格或樣式工具欄中的元件樣式下拉菜單旁邊的管理元件樣式圖標,查看和管理原型中的元件樣式。

          11. 元件樣式層次結構

          每個元件的視覺外觀由在以下位置設置的樣式屬性決定,從最低優先級到最高優先級:

          1.元件樣式管理器對話框頂部的默認樣式,樣式屬性選擇將應用于原型中的每個元件。

          2.元件已應用的元件樣式(例如Box1樣式),其樣式屬性選擇將覆蓋默認樣式中的選擇。

          3.在樣式窗格或樣式工具欄上的元件自身上進行的樣式屬性設置,將覆蓋默認樣式和元件自己應用的窗口元件樣式中的選擇。

          *提示:當元件的樣式屬性選擇與其元件樣式的選擇不同時,元件樣式名稱后的樣式窗格和樣式工具欄中將帶有星號。

          六、更新和創建樣式

          1. 快速更新

          在樣式窗格中,單擊樣式名稱右側的更新可以進行快速更新,更新將應用于當前使用元件樣式的項目中的所有元件,還將適用于使用元件樣式的任何新加元件。

          2. 快速創建

          在樣式窗格中,單擊元件當前應用的元件樣式右側的創建,可以打開元件樣式管理器對話框,其中元件的樣式更改已添加到新樣式中,在對話框的左列中,重命名新的元件樣式。在右列中,可以對樣式進行其他更改。

          3. 元件樣式管理器

          單擊樣式窗格或工具欄中的元件樣式下拉菜單旁邊的管理元件樣式圖標打開元件樣式管理器,也可以通過項目→元件樣式管理器菜單選項訪問對話框。

          單擊對話框頂部的添加,或者,單擊復制從現有樣式制作新樣式,添加新樣式。

          選中元件,單擊刪除,刪除樣式。

          使用向上和向下箭頭重新組織對話框中的樣式。

          在左欄中選擇元件,編輯元件樣式的樣式屬性。

          在右列中,選中樣式屬性旁邊的框,以使該屬性覆蓋默認樣式,在適用的字段中選擇該屬性。

          也可以一次編輯多種樣式,在左欄中選擇樣式時,按住CTRL或CMD,在右欄中進行更改。

          4. 復制和粘貼樣式

          復制一個元件的樣式并將其粘貼到另一個元件上。

          1. 復制第一個元件。
          2. 右鍵單擊第二個元件。
          3. 選擇特殊粘貼→粘貼樣式。

          第二個元件將具有第一個元件的所有樣式屬性,包括已經應用的元件樣式。

          5. 格式刷

          在主菜單的編輯→格式刷中使用格式刷。

          可以選擇要復制和粘貼的單個屬性,也可以一次粘貼到多個元件上。

          此外,格式刷允許復制和粘貼樣式效果。

          6. 交互樣式效果

          樣式效果是基于Web瀏覽器中的應用于交互動態的元件樣式,只要元件處于特定狀態(例如,將鼠標懸?;蚪?,就會將元件樣式從其基本樣式更改為其他樣式。

          七、元件庫

          AxureRP預裝了四個元件庫——默認、流程、圖標和示例UI模式——也可以安裝其他庫,甚至創建自己的元件庫。

          AxureRP元件庫以獨立的,rplib文件存儲在電腦文件系統中。

          1. 元件庫切換

          元件窗格頂部的下拉菜單列出了當前加載到AxureRP中的所有元件庫和本地映像文件夾,以及通過AxureCloud獲取的任何元件庫。

          單擊下拉列表并在列表中選擇元件庫,可以切換元件庫,或者,選擇所有庫一次查看所有已加載的元件。

          2. 添加和刪除庫

          添加本地庫文件

          單擊窗格頂部的添加元件庫圖標,在出現的文件瀏覽器中,找到所需的.rplib文件,選擇將元件庫添加到元件庫窗格中,可以將本地儲存的元件庫添加到元件庫中。

          每次打開AxureRP時,都會嘗試加載過去已添加的所有本地元件庫。

          AxureRP還將嘗試加載在以下文件位置找到的所有元件庫:

          • Windows:C:Users%USERNAME%MyDocumentsAxureLibraries
          • Mac:~/Documents/Axure/Libraries

          *提示:單擊窗格右上方的選項菜單,選擇在磁盤上查找,可以查看本地元件庫文件的存儲位置。

          刪除庫

          在元件庫窗格頂部的下拉列表中選中,單擊窗格右上方的選項菜單,然后選擇刪除元件庫。

          八、網格、參考線和對齊

          AxureRP畫布包含許多功能來輔助設計圖表,可以顯示和自定義背景網格以及垂直和水平參考線,這些參考線可以應用于特定頁面,也可以全局應用于項目中的所有頁面。

          用作簡單的視覺指南,也可以讓元件自動相互對齊。

          1. 網格

          通過視圖→標尺,網格和參考線并選中顯示網格,在畫布上顯示點或線的網格。

          無論網格是否可見,拖動移動或調整元件大小時,元件都會捕捉到網格,可以通過取消選中視圖→標尺,網格和參考線下的對齊網格禁用。

          默認情況下,網格為10pxx10px的繪制點,如果需要,可以通過視圖→標尺,網格和參考線→網格設置對話框中的選項設置自定義間隔,切換到線條,更改網格的顏色。

          2. 參考線

          參考線是添加到畫布上的線條,有助于標記應放置元件的位置,在視圖→標尺,網格和參考線中切換各種參考線的可見性。

          1)頁面和全局參考線

          頁面參考線出現在項目的單個頁面或母版中,從其中一個標尺上單擊并拖動,將參考線放置在所需的X或Y值處,可以將頁面參考線添加到畫布,頁面參考線默認為藍色。

          全局參考線類似于頁面參考線,無論當前正在使用哪個頁面或母版,參考線始終在畫布上可見,按住CTRL或CMD并從標尺中拖動,創建全局參考線,全局參考線默認為紫紅色。

          2)刪除頁面和全局參考線

          右鍵單擊參考線,選擇刪除,或者,選擇一個參考線或一組參考線,然后按鍵盤上的Delete鍵,可以刪除參考線。

          在視圖→標尺,網格和參考線→除所有參考線,可以刪除所有參考線

          *提示:從一頁刪除全局參考線也會將其從項目的其他每一頁中刪除。

          3)創建參考線對話框

          用視圖一標尺,網格和參考線一創建參考線對話框一次創建一系列頁面或全局參考線。

          可以為每個字段指走自己的值,也可以從對話框頂部的下拉列表中選擇四個預設:

          1. 960像素網格:12列
          2. 960像素網格:16列
          3. 1200像素網格:12列
          4. 1200像素網格:15列

          4)鎖定參考線

          選擇參考線,單擊鼠標右鍵,在上下文菜單中選擇鎖定,可以鎖定頁面和全局參考線,讓參考線不能被移動或刪除。

          還可以通過檢查視圖→標尺,網格和參考線→鎖定參考線,一次鎖定項目中的所有參考線。

          5)頁面尺寸參考線

          頁面尺寸參考線顯示了已走義頁面尺寸的頁面邊界,頁面頂部,左側和右側邊界由出現在畫布的視口區域周圍的灰色蒙版標記,底部邊界由虛線,褐紅色線標記。

          如果在頁面上使用自適應視圖,則頁面尺寸參考線將在切換時視圖時自動更新。

          6)打印參考線

          打印參考線顯示了當前所選打印紙張尺寸的頁面邊界(可在文件→紙張尺寸和設置中找到),并目當你在紙張尺寸之間切換時,參考線會自動更新,默認情況下,打印參考線為灰色。

          7)對齊參考線

          在畫布上拖動元件或對其進行調整大小時,參考線將自動捕捉到附近的所有參考線。

          在視圖→標尺,網格和參考線,取消選中對齊參考線,可以禁用此行為。

          8)底層顯示參考線

          默認情況下,參考線展示在畫布上的元件前面,始終可見。

          打開視圖→標尺,網格和參考線→參考線設置對話框,選中底層顯示參考線,可以將參考線設置在元件后面。

          4. 標尺

          在視圖→標尺,網格和參考線,選中或取消選中顯示標尺,可以切換畫布的左邊緣和上邊緣標尺的可見性。

          九、管理頁面

          AxureRP原型被組織到頁面中,可以在“頁面”窗格中進行管理,添加AxureRP原型的頁數沒有限制,在“頁面”窗格中雙擊頁面名稱,以在畫布上將其打開。

          1. 添加,刪除和命名頁面

          單擊“頁面”窗格右上方的“添加頁面”圖標,添加頁面,也可以右鍵單擊頁面,使用“添加”子菜單選擇在被單擊頁面的之前,之后或作為其子頁面添加頁面。

          在頁面上單擊鼠標右鍵,選擇“刪除”,或選中頁面并按Delete,刪除頁面。

          雙擊頁面名稱或右鍵單擊頁面名稱,選擇“重命名”更改頁面名稱,頁面名稱被修改時,指向該頁面的現有鏈接將動態更新。

          2. 管理頁面

          在“頁面”窗格向上,向下,向右或向左拖動頁面名稱,或者,按住CTRL(Windows)或CMD(Mac)的同時使用鍵盤的箭頭鍵,對頁面進行重新排序。

          *提示:“頁面”窗格頂部的頁面用作Web瀏覽器中原型的登錄頁面,重新排列頁面順序更改登錄頁面。

          3. 文件夾

          使用“頁面”窗格右上方的“添加文件夾”圖標添加文件夾,也可以右鍵單擊頁面,選擇添加→文件夾,右鍵單擊文件夾,選擇“刪除”或選中頁面并按Delete。

          *提示:刪除文件夾會刪除其中包含的頁面,刪除包含頁面的文件夾之前,AxureRP會要求確認操作。

          雙擊文件夾名稱或右鍵單擊該文件夾,選擇“重命名”,修改文件夾名稱。

          4. 圖表類型

          頁面名稱左側的圖標指示該頁面包含的圖表類型,即“頁面”或“流程”,右鍵單擊頁面,使用“圖表類型”子菜單,更改圖標。

          5)管理打開的頁面

          在畫布上打開的每個頁面都由畫布上方的選項卡表示,單擊頁面的選項卡顯示在畫布上,或使用鍵盤快捷鍵在這些選項卡中導航。

          通過拖動重新排列頁面選項卡的順序,單擊選項卡上的X圖標關閉,也可以右鍵單擊一個選項卡,從“關閉選項卡”,“關閉所有選項卡”和“關閉其他選項卡”中選擇(僅打開你右鍵單擊的選項卡)。

          單擊畫布右上方的箭頭圖標,打開的頁面的完整列表。

          十、頁面樣式

          1. 樣式屬性

          在“樣式”窗格中通過編輯自定義原型頁面樣式。

          2. 頁面尺寸

          默認情況下,頁面尺寸是根據畫布上的元件自動計算的,畫布本身不受約束。

          用頁面尺寸下拉菜單從多種常用設備尺寸中進行選擇為頁面設置靜態寬度或高度,或者使用“Web”和“自定義設備”選項定義自己的自定義尺寸。

          為頁面選擇尺寸時,畫布將更改大小以匹配,灰色負空格將白色視口區域框定,該框架也反映在Web瀏覽器中。

          *提示:在移動設備上查看原型時,在原型播放器的視圖設置中選擇“縮放到寬度”,以使頁面內容適合設備的視口。

          3. 自適應視圖

          單擊“添加自適應視圖”為每個目標視口分別設置一組頁面尺寸,可以設計多鐘視口尺寸,為每種視口大小調整內容大小和位置,然后Web瀏覽器將自動為目標設備的視口顯示適當的視圖。

          4. 頁面對齊

          在“左對齊”和“居中對齊”之間進行選擇,確定頁面內容是對齊到瀏覽器窗口的左邊緣還是居中對齊。

          *提示:頁面對齊方式不會影響AxureRP畫布上元件的對齊方式。

          5. 填充

          顏色:設置頁面的背最顏色和不透明度

          圖片:設置頁面的填充圖像以及圖像的對齊方式和填充類型。

          *提示:在AxureRP和Web瀏覽器中都應用了顏色和圖像填充。

          6. 低保真模式

          低保真度模式會降低頁面的視覺保真度,將注意力集中在設計用戶體驗上,而不是視覺上,在頁面上啟用“低保真”模式時,元件將轉換為灰度,所有字體都替換為“Axure手寫”字體,以使外觀更粗糙。

          7. 交互

          1)事件、案例和動作

          交互決定了元件和頁面的動態行為,單擊按鈕導航到原型中的另一個頁面是一種交互,如將鼠標懸停在一個元件上顯示頁面上的另一個元件。

          在“交互”窗格中創建和管理原型的交互,從窗格底部的所選元件的最常見交互中選擇,也可以單擊“新建交互”來構建自己的交互。

          *提示:單擊“交互”窗格右下角的窗口圖標,或雙擊任何事件或窗口元件名稱打開“交互編輯器”對話框,處理更多交互。

          2)交互結構

          交互由三部分組成:

          3)事件

          事件相當于是特定頁面和窗口元件的行為觸發器,在Web瀏覽器中發生觸發行為時,將觸發事件,并且與此事件相關聯的其他事件也會觸發,例如,單擊按鈕導航到原型中的其他頁面,則已觸發基點擊事件。

          查看頁面或窗口元件可用的事件,選中元件在“交互”窗格中單擊“新建交互”,在列表中選擇一個事件以配置其下的交互。(可以在此頁面的下方查看可用頁面的完整列表和窗口元件事件。)

          在“交互”窗格中將其選中,后按DELETE,刪除事件及其所有案例和操作。

          4)案例

          案例在Web瀏覽器中為響應頁面或窗口元件事件觸發而發生的有序操作列表,盡管默認情況下第一個案例的名稱是隱藏的,當為事件分配一個或多個操作時,案例會自動添加到事件中。將光標懸停在事件名稱上,然后單擊右側的“啟用案例”查看第一個案例的名稱。

          可以通過單擊事件名稱右側的“添加案例”圖標來向事件添加其他案例,當事件在Web瀏覽器中觸發時,可以在出現的菜單中選擇要執行的事件,或者,設置條件邏輯以根據某些條件自動進行此確定。

          在“交互”窗格中將其選中,按DELETE,可以刪除案例,可以通過上下拖動事件來對事件重新排序。(使用條件邏輯時,案例的順序很重要。)

          5)動作

          動作是響應頁面或窗口元件事件觸發而在Web瀏覽器中發生的更改。例如,如果單擊按鈕導航到原型中的其他頁面,則響應按鈕的點擊事件,發生了“打開鏈接”操作。

          在“新建互動”菜單中選擇一個事件時,將顯示可用操作的列表。選擇動作后,系統會提示配置,通過將光標懸停在操作名稱上方并單擊右側的“添加目標”,將其他目標添加到該操作(對于添加目標的操作)

          單擊案例底部的“+”“插入操作”圖標,向案例添加更多操作。

          在“交互”窗格中選擇案例,按DELETE,刪除案例。

          可以通過上下拖動來重新排列案例中的動作,操作從上到下按順序進行,因此按照希望案例在Web瀏覽器中發生的準確順序進行排列。

          十一、事件列表

          1. 頁面和母版事件列表

          1)鼠標

          • 頁面單擊:當頁面被單擊時。
          • 頁面雙擊:當頁面被雙擊時。
          • 頁面右擊:在頁面上觸發上下文菜單時,通過右鍵單擊或其他方法。
          • 頁面鼠標移動:鼠標光標在頁面上移動時連續觸發。

          2)鍵盤

          • 頁面按鍵按下:當按下鍵盛鍵時。
          • 頁面按鍵松開:釋放鍵盤鍵時(按下后)。

          3)頁面

          • 窗口尺寸改變時:調整瀏覽器窗口大小時(在頁面首次載入及頁面載入以后都會觸發)。
          • 頁面載入時:首次在Web瀏覽器中加載頁面時。
          • 視圖改變時:當前的自適應視圖由以下原因之一發生改變時:

          。調整瀏覽器窗口的大小。

          。使用“設置自適應視圖”操作設置視圖。

          。在原型播放器的“自法應視圖”下拉列表中選擇一個新機圖。

          • 窗口向上滾動時:當窗口向上滾動時。
          • 窗口向下滾動時:當窗口向下滾動時。
          • 窗口滾動時:當頁面向任何力向滾動時。

          2. 元件事件列表

          1)所有元件

          鼠標

          • 單擊:元件被單擊時。
          • 雙擊:元件被雙擊時。
          • 鼠標右擊時:在窗口元件上觸發上下文菜單時,通過右擊或其他方法。
          • 鼠標按下時:單擊元件時,同時按住鼠標按鈕。
          • 鼠標松開時:單擊元件時,釋放鼠標按鈕。
          • 鼠標移動時:鼠標光標在元件上移動時連續觸發。
          • 鼠標移入時:鼠標光標進入元件上方的區域時。
          • 鼠標移出時:鼠標光標移出元件上方的區域時。
          • 鼠標停放時:鼠標光標懸停在元件上一秒鐘時。
          • 鼠標長按時:在元件上按住鼠標按鈕一秒鐘后。

          鍵盤

          • 按鍵按下時:當元件具有瀏施器焦點時按下建盤鍵。
          • 按鍵松開時:當元件具有劉覽器焦點時釋放鍵盤鍵(按下后)。

          元件

          • 移動時:通過“移動”動作移動元件時。
          • 旋轉時:過“旋轉”動作旋轉元件時。
          • 尺寸改變時:通過“縮放”動作縮放元件尺寸時。
          • 顯示時:通過顯示或切換可見性操作顯示窗口元件時。
          • 隱藏時:通過隱落或切換可見性操作隱藏窗口元件。
          • 獲取焦點時:當窗口元件通過單擊、制表或通過“焦點”動作獲得瀏覽器焦點時。
          • 失去焦點時:當窗口元件通過單擊、制表戲通過“焦點”操作失去瀏覽器焦點時。
          • 選中:通過“設置進中動作”將元件設置為選中狀態時,或者單擊復選框或單選按鈕時。
          • 取消選中:通過設置選中動作將元件設置為未選中狀態時,或者單擊復選框或單選按鈕時。
          • 選中改變時:當窗口元件的選中狀態由于“設置選中操作”而改變時,或者當單擊復選框或單選按鈕時。
          • 載入時:窗口元件最初加載到Wed瀏覽器中時(頁面加載后觸發)。

          2)下拉列表和列表框獨有

          3)文本輸入框和文本域獨有

          • 文本改變時:當文本輸入框和文本城文本更改時,可以通過通過“設置文本”操作案更改。

          4)動態面板獨有

          手勢

          • 向左滑動:將動態面板從右向左滑動時。
          • 向右滑動:當動態面板從左向右滑動時。
          • 向上滑動:當動態面板從底部向頂部滑動時。
          • 向下滑動:將動態直板從頂部滑動到底部時。

          動態面板

          • 面板轉態改變時:通過“設置面板狀態”操作更改面板的狀態時。
          • 拖動開始時:拖動動態面板時。
          • 拖動時:停止拖動面板時,(釋放鼠標按鈕時觸發,而不是停止移動時觸發)。
          • 拖動結束:拖動動志面板時連續觸發。
          • 向上滾動時:動態面板向上滾動時。
          • 向下滾動時:動態面板向下滾動時。
          • 滾動時:動態面板沿任何方向滾動時。

          5)中繼器獨有

          • 每項加載時:當Web瀏覽器中首次加載中繼器的項目以及中繼器數據集發生任何更改時。
          • 列表項尺寸改變時:由于任何交互(例如,顯示,隱藏或調整項目中元件的大小)而導致中繼器項目的大小發生變化時。

          3. 操作列表

          1)鏈接

          打開鏈接:在以下位置打開原型頁面或外部URL:

          • 當前窗口:當前瀏覽器窗口。
          • 新窗口/標簽:新的瀏覽器窗口或標簽。
          • 彈出窗口:一個彈出窗口。
          • 父級窗口:彈出窗口的父窗口(必須在彈出窗口中加載的頁面中使用)。
          • 關閉窗口:關閉當前的瀏覽器窗口或標簽。

          在框架中打開:更改在內聯框架窗口元件中加載的頁面或包含內聯框架的頁面。

          • 內聯框架:頁面上的內聯框架。
          • 父級框架:包含內聯框架的頁面(必須從內聯框架中加載的頁面中使用)。

          動到元件(錨鏈接):將瀏覽器窗口滾動到頁面上元件的位置。

          2)元件

          • 顯示/隱藏:改變元件的可見性。
          • 設置面板狀態:更改動態面板的可見狀態。
          • 設置文本:改變元件上的文本。
          • 設置圖片:更改圖像元件上的圖像。
          • 設置選中:更改元件的選中狀態,如果窗口元件具有“選中樣式”效果,則會更改其樣式效果。
          • 設置列表選項:更改下拉列表或列表框的選定列表選項。
          • 啟用/禁用:啟用或禁用窗口元件,禁用的窗口元件無法在Web瀏覽器中進行交互,如果具有禁用樣式效果,則其樣式效果會發生變化。
          • 移動:將元件移動到頁面上的新位置。
          • 旋轉:圍繞所選錨點旋轉元件。
          • 設置尺寸:更改元件的大小。
          • 置于頂層/底層:將元件按頁面的層級放置到最前面或最后一層。
          • 設置透明度:改變元件的透明度。
          • 焦點:賦予窗口元件瀏覽器焦點,將文本光標移至文本輸入元件并突出顯示可單擊的窗口元件。
          • 展開折疊樹節點:展開或折疊樹元件的選定節點。

          3)變量

          4)中繼器

          • 添加排序:使用指定的排序條件對中繼器數據集進行排序。
          • 刪除排序:從中繼器中刪除排序。
          • 添加篩選:使用指定的篩選條件過濾中繼器數據集。
          • 刪除篩選:從中繼器刪除篩選。
          • 設置當前頁:顯示分頁中繼器的特定頁面。
          • 設置每頁項目數:設置分頁中繼器每頁顯示的項目數。
          • 數據集→添加行:向中繼器的數據集添加新行。
          • 數據集→標記行:標記中繼器數據集中符合指定條件的行。
          • 數據集→取消標記行:取消標記中繼器數據集中符合指定條件的行。
          • 數據集→更新行:更新中繼器數據集中的現有數據。
          • 數據集→刪除行:從中繼器的數據集中刪除行。

          5)其他

          • 設置自適應視圖:更改顯示在web瀏覽器中的自適應視圖。
          • 等待:在執行任何后續操作之前,添加指定時間的暫停(以毫秒為單位)。
          • 其他:顯示指定的文本描述(作為尚未原型化的動作的占位符)。
          • 觸發事件:在頁面,母版或窗口元件上觸發指定事件。
          • 引發事件:“引發”母版窗口元件上的事件,直至頁面級別。

          4. 文字鏈接

          文本鏈接是一種獨特的窗口元件類型,不能單獨存在,必須將添加到形狀元件上并作為元件的一部分。

          1)創建和刪除文字鏈接

          在形狀元件上雙擊或選擇文本,按Enter,以編輯文本,然后,選擇要變成鏈接的文本部分,在“交互”窗格中單擊“插入文本鏈接”

          在畫布上選擇文本鏈接,按DELETE,刪除文本鏈接。

          2)文字鏈接遮罩

          默認情況下,文本鏈接用粉紅色遮罩,可以在應用程序菜單的“視圖”→“遮罩”中切換遮罩。

          *提示:窗口元件遮罩,包括文本鏈接遮罩,不在Web瀏覽器中顯示。

          3)文字鏈接樣式

          選擇文本鏈接,在“樣式”窗格或樣式工具欄中進行樣式選擇。

          更新“文本鏈接”窗口元件樣式,該樣式默認情況下應用于所有文本鏈接。

          十二、樣式效果

          鼠標懸停

          當鼠標光標移到元件上時應用。(默認情況下在文本鏈接上啟用。)

          鼠標按下

          單擊窗口元件并按下鼠標按鈕時應用。(默認情況下在文本鏈接上啟用。)

          選中

          當通過“設置選中動作”將元件設置為選中狀態時,或者在單擊復選框或單選按鈕時自動應用。

          禁用

          通過“禁用”操作將元件設置為禁用狀態時應用。(默認情況下在例如文本字段和下拉列表之類的窗體元件上啟用。)

          獲取焦點

          當元件在Web瀏覽器中獲取焦點時應用,例如文本字段和下拉列表之類的窗體元件在單擊或切換到選項卡時會自動獲取瀏覽器的焦點,還可以使用“焦點”操作動態地給元件瀏覽器焦點。

          *提示:定義文本字段或文本區域上提示文本的樣式。(默認情況下在這些元件上啟用。)

          啟用樣式效果

          1. 選擇窗口元件,然后在“交互”窗格中單擊“新建交互”。
          2. 在事件列表下方,在“樣式效果”標題下選擇所需的樣式效果。
          3. 在出現的區域中,選擇要為樣式效果更改的樣式屬性,通過單擊更多樣式屬性來查看樣式屬性的完整列表。

          在編輯樣式效果時,更改內容暫時應用于畫布上的元件,在“交互”窗格中關閉樣式效果的對話框時當前元件將返回默認樣式。

          *提示:創建一個元件樣式保存樣式選擇,在“窗口元件樣式”下拉菜單中選擇窗口元件樣式,啟用樣式效果。

          更改窗口元件樣式,會自動應用到使用它的所有窗口元件。

          復制和粘貼樣式效果

          在主菜單的“編輯”→“格式刷”中找到格式刷,使用格式刷將樣式效果從一個窗口元件復制并粘貼到另一個窗口元件。

          十三、動畫

          可以對某些動作進行動畫處理,在Web瀏覽器中發生時具有視覺效果,例如使用漸變動畫隱藏元件或使用反彈動畫移動元件。

          每個動畫都有兩個部分:效果和時間。

          • 在“動畫”下拉列表中選擇的動畫效果決定了動畫的視覺效果。
          • 在ms字段中輸入的動畫時間決定了完成動畫所需的時間(以毫秒為單位)。

          1. 可見性效果

          以下效果可應用于更改窗口元件可見性的操作,這些是“顯示/隱藏”操作和“設置面板狀態”操作。

          • 淡入淡出:逐漸更改元件或面板狀態的不透明度,直到完全看不見。
          • 向左/向右/向上/向下滑動:將元件或狀態滑動到視圖中或從視圖中移出。
          • 向左/向右/向上/向下翻轉:沿中心軸翻轉元件或狀態到視圖中或從視圖中移出(X代表上/下,Y代表左/右)。

          2. 移動效果

          也稱為“緩動”以下效果決定了在指定時間范圍內動畫的步調,這些可以應用于更改窗口元件或頁面本身的空間方向的動作。包括“滾動到元件”,“移動”,“旋轉”,“設置大小”和“設置不透明度”操作。

          • 逐漸:動畫在開始和結束時比在中點處稍微慢一些。
          • 線性:動畫在整個定時中以相同的速度進行。
          • 緩進:動畫開始緩慢,逐漸變快,直到定時結束。
          • 緩出:動畫開始緩慢,逐漸變快,直到定時結束。
          • 緩進緩出:動畫開始緩慢,逐漸變快直到定時的中點;然后逐漸變慢。(類似于Swing,但更為明顯。)
          • 彈跳:動畫像緩進一樣加速,但是一旦達到動畫的終點,就會反彈幾次。
          • 彈性:動畫會超出其終點,然后彈回原點。

          十四、文檔化原型

          1. 頁面和元件注釋

          元件和頁面注釋是可以添加到設計中的文本元數據,使用這些注釋來記錄規范,將元件和頁面與項目需求相關聯,記錄更改并與開發同學進行交流。

          1)頁面注釋

          如果在畫布上沒有選擇任何元件,則頁面注釋字段位于“注釋”窗格的頂部,單擊進入頁面注釋字段以編輯其文本。

          在編輯時,可以單擊字段右上方的“格式”圖標來格式化注釋的文本。

          2)元件注釋

          元件注釋在“注釋”窗格中的頁面注釋下方列出,在畫布上沒有選擇任何元件時,將看到頁面上存在的所有元件注釋,在畫布上或“概要”窗格中選中元件,過濾到單個元件的注釋。

          添加元件注釋

          單擊“注釋”窗格底部“新注釋”區域中的注釋字段之一,該注釋字段以灰色的腳注圖標標記。編輯此區域中的一個字段將創建一個新的元件注釋。

          分配元件注釋

          可以將窗口元件注釋分配給頁面上的任何窗口元件,并且一個窗口元件可以分配多個注釋。此外,可以選擇不分配元件注釋。

          如果在選擇元件時創建新的元件注釋,則該注釋將自動分配給該元件。相反,如果在未選擇任何元件的情況下創建新的元件注釋,則該注釋未分配;單擊注釋右上方的“分配元件”,分配未分配的注釋;單擊便箋右上角的元件名稱,將當前分配的注釋分配給其他元件,或取消分配。

          刪除元件注釋

          選中元件,按DELETE。

          或者,右鍵單擊窗口元件注釋,然后在上下文菜單中選擇“刪除”。

          在單擊時按CMD(Mac)或CTRL(Windows)多選元件,按DELETE刪除。

          排列元件注釋

          元件的腳注圖標上顯示的數字與其在頁面上存在的元件注解列表中的注解位置相對應??梢酝ㄟ^在“注釋”窗格中向上,向下,向左或向右拖動注釋來更改編號。還可以通過“布局”一“對腳注重新編號”菜單選項立即自動對所有腳注重新編號。

          向左或向右拖動元件注釋將使其縮進或縮進。

          在另一個注下縮進一個注時,縮進注的編號將變成一個小數,表示其在父便箋下的位置。例如,在注釋#4下縮進一個注釋將使該注釋縮進為注釋#4.1,隨后的注釋將為#4.2,#4.3,依此類推。

          3)包括元件文本和交互

          單擊注釋右上角的回形針圖標,選擇要包括的項目,可以在其分配的注釋中包括元件的文本和交互。

          對窗口元件文本和交互的任何更改將自動反映在注釋中。

          復制和粘貼元件注釋

          復制帶有所需注釋的元,右鍵單擊要粘貼注,可以將元件注釋從一個元件復制并粘貼到另一個元件,然后選擇選擇性粘貼→粘貼元件注釋。

          添加注釋字段

          默認情況下,頁面和元件均具有單個文本類型的注釋字段。可以通過單擊“注釋”窗格右上方的“更多屬性”圖標或使用“項目”→“注釋字段和集合”主菜單選項來添加更多字段。

          在“注釋字段和集”對話框中,使用“編輯元件注釋”選項卡來管理元件注釋字段,并使用“編輯頁面注釋”選項卡來管理頁面注釋字段。頁面注釋字段僅支持文本,但是窗口元件注釋字段可以是文本,選擇列表或數字字段。

          4)元件注釋字段集

          在“編輯元件字段集”選項卡上,可以將元件注釋字段組織成針對項目生命周期中不同受眾或不同時期的集合。

          創建至少一個字段集后,可以使用頁面注釋下方的下拉列表按字段集過濾“注釋”窗格。

          在瀏覽器中查看字段

          在Web瀏覽器中查看原型時,可以通過單擊原型播放器右上方的“文檔”圖標來查看當前頁面的頁面和元件注釋。

          使用HTML生成器設置的“注釋”選項卡上的選項,更改頁面和窗口元件注釋在瀏覽器中的顯示方式。

          項目文檔中的注釋

          頁面和元件注釋包含在Word文檔規范和CSV報告中。

          *內容中所用的AxurePR9版本號:3744

          本文由 @PM大明同學 原創發布于人人都是產品經理。未經作者許可,禁止轉載

          題圖來自Unsplash,基于CC0協議

          該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務


          文章「干貨」Dependency check配置Mysql數據庫存儲nvd數據 中

          介紹了如何把nvd庫中的cve信息保存到數據庫中的方法!但這仍然不是最優的方案,客戶端執行腳本后,仍然需要更新cve數據到數據庫中,雖然穩定性會得到保障,但是依然會浪費一定時間!那么我們的終極方案是什么呢?

          實現思路其實也非常簡單,只需兩步

          步驟一、定時更新最新的cve信息到數據庫

          步驟二、客戶端執行dependency-check時,設置較長的校驗時間使其無須檢測更新,直接從數據庫中讀取數據

          這里注意,步驟一和步驟二是分開進行的,先執行cve信息的更新,然后客戶端執行dependency-check,這樣就能保證dependency-check執行時數據庫中cve數據的即時性了!

          定時更新cve

          定時更新最新的cve信息到數據庫

          dependency-check.bat --cveStartYear 2022 --updateonly --dbDriverName com.mysql.cj.jdbc.Driver --connectionString jdbc:mysql://127.0.0.1:3306/dependencycheck --dbUser dcuser --propertyfile d:\dependency\pwd.properties

          這條語句需要注意的參數有:

          cveStartYear 2022 表示只更新2022年的nvd種子數據,因為我們數據庫中已經有以前年份的數據了,所以通過這種形式則實現了迭代更新,會大量的縮短更新時間!注意:在dependencycheck 7.1才開始有該參數。

          updateonly 表示只更新數據,不進行掃描

          dbDriverName 表示數據庫的dirver名稱

          connectionString 表示連接數據庫的字符串,執行初始化腳本后創建的數據庫叫dependencycheck

          dbUser 是用戶名,初始化的用戶名叫 dcuser

          propertyfile 這個參數是表示dcuser 的密碼,需要在properties文件中存儲,形式是:data.password=DC-Pass1337! 這個密碼是執行初始化腳本后的默認密碼

          如果我們不需要對某種指定類型的文件進行檢測分析,可以使用參數—disable*** 放棄對指定的文件類型進行分析進而提升檢測效率。例如:disableRetireJS、disableNodeJS、disableNodeAudit、disableAssembly等等。

          詳細參數使用可以參考官方文檔:

          https://jeremylong.github.io/DependencyCheck/dependency-check-cli/arguments.html

          詳細的分析器參數含義如下圖所示:

          文檔鏈接,https://jeremylong.github.io/DependencyCheck/analyzers/index.html

          定時任務更新CVE

          最后我們就可以寫一條定時任務,在指定的時間對cve數據庫進行及時更新了!

          思路一:腳本編寫定時任務,具體實現方式這里不再贅述,自行百度即可。也可以參考文檔https://jeremylong.github.io/DependencyCheck/data/cachenvd.html)

          思路二:通過jenkins 創建一個定時任務執行dependency-check

          設置較長的cve有效檢測時間

          dependency-check.bat --scan ${scanProject} --format HTML --out ${project_path} --dbDriverName com.mysql.cj.jdbc.Driver --connectionString jdbc:mysql://127.0.0.1:3306/dependencycheck --dbUser dcuser --propertyfile /opt/scripts/config/pwd.properties --cveValidForHours 8800 --disableRetireJS --disableNodeJS --disableNodeAudit –disableAssembly

          主站蜘蛛池模板: 一区二区三区高清在线| 色综合视频一区二区三区| 91久久精一区二区三区大全| 国产成人综合亚洲一区| 精品乱码一区二区三区四区| 农村乱人伦一区二区| 无码人妻精品一区二区三| 国偷自产av一区二区三区| 日韩精品无码一区二区三区四区| 日韩精品一区二区三区中文字幕| 视频一区在线免费观看| 国产美女视频一区| 精品视频一区二区三区免费| 精品国产免费一区二区三区香蕉| 国产午夜精品免费一区二区三区| 免费精品一区二区三区第35| 无码国产精品一区二区免费16| 蜜桃无码一区二区三区| 在线精品一区二区三区| 亚洲色精品三区二区一区| 国产成人一区二区在线不卡| 国产一区风间由美在线观看| 国产亚洲综合精品一区二区三区| 国产99精品一区二区三区免费| 大伊香蕉精品一区视频在线| 亚州日本乱码一区二区三区| 国产精品视频一区二区噜噜| 中文字幕精品一区二区2021年 | 无码人妻精品一区二区蜜桃| 亚洲熟女综合一区二区三区| 全国精品一区二区在线观看| 中文字幕精品亚洲无线码一区应用| 国产AV午夜精品一区二区入口| 国产福利一区二区三区| 国产伦精品一区二区三区| 美女视频一区三区网站在线观看| 国精品无码一区二区三区在线蜜臀| 亚洲狠狠久久综合一区77777| 亚洲av成人一区二区三区观看在线 | 免费无码一区二区三区蜜桃大 | 成人精品视频一区二区|