<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Web自動(dòng)化測(cè)試 四 ----- python selenium 八大元素定位

      python selenium 八大元素定位方法

      前提條件:先要引入webdriver模塊,創(chuàng)建一個(gè)Chrom瀏覽器對(duì)象,以及打開一個(gè)網(wǎng)頁(yè)(以百度為例)。

      1 from selenium import webdriver
      2 
      3 driver = webdriver.Chrome()
      4 
      5 driver.get('http://www.baidu.com')

      一、ID定位

      driver.find_element_by_id('kw')
      

        備注:

      • 此方法相當(dāng)于JS中的getElementById(),ID是唯一的
      • 但是ID值也是有可能動(dòng)態(tài)變化的,如果ID是帶數(shù)字的或者是使用的不太規(guī)則的字符串(可能經(jīng)過(guò)編碼處理),那么ID值很有可能是動(dòng)態(tài)變化的
      • 盡量避免使用帶數(shù)字或者不規(guī)則的屬性去定位元素

      二、name定位

      driver.find_elements_by_name('wd') # 返回的是列表,找出來(lái)的元素不一定是唯一的
      driver.find_element_by_name('wd') # 只會(huì)返回找到的第一個(gè)元素
      • name屬性經(jīng)常用來(lái)進(jìn)行元素定位(input輸入、標(biāo)記),但是要注意radio和checkbox,返回的是一個(gè)WebElement。

      實(shí)例:

      new_ele = driver.find_element_by_name('tj_trnews')
      print(new_ele.text)  # 獲取元素的文本
      print(new_ele.get_attribute('href')) # get_attribute方法用于獲取某個(gè)元素的某個(gè)屬性
      print(new_ele.tag_name)
      # 使用這種不唯一的屬性定位元素時(shí)。可以現(xiàn)在網(wǎng)頁(yè)上用js定位一下看屬性是否是唯一的
      # 一個(gè)類的方法上有@property,表示把一個(gè)方法變?yōu)橐粋€(gè)屬性,叫做動(dòng)態(tài)屬性
      

        

      三、classname定位

      d = driver.find_element_by_class_name('s_btn')
      d1 = driver.find_elements_by_class_name('s_btn')
      • 如果classname有空格,要把有空格的部分去掉,再次確認(rèn)用沒(méi)用空格的部分查找看是否是唯一的元素

      四、tagname標(biāo)簽名定位

      • 基本不用,因?yàn)檎页鰜?lái)的元素一大把

      五、超鏈接定位

      a = driver.find_element_by_link_text('新聞')

      六、partialLink定位

      b = driver.find_element_by_partial_link_text('新') # 通過(guò)一部分查找

      七、Xpath定位

      1、定義

      Xpath即為XML(XML Path Languagr),他是一種用來(lái)確定XML文檔中某個(gè)部分的語(yǔ)言。

      組合:可以過(guò)濾很多元素。

      層級(jí)關(guān)系:

      • /表示兒子
      • //表示所有的下屬標(biāo)簽(子孫)
      • ..表示上一級(jí) 
      • .表示當(dāng)前層級(jí)

      2、使用方法

      //input[@class='s_ipt'] (謂語(yǔ)條件)
      //input[@class='s_ipt' and not @name='wd' and @id='kw']

      //input[text()='新聞']
      //input[contains(text(), 'value')]
      //input[contains(@class, 'value')]

      元素構(gòu)成:

      • tagname
      • 屬性
      • text
      • 下屬標(biāo)簽

      //相對(duì)定位[謂語(yǔ)條件(@class='')]/子元素tag[謂語(yǔ)條件]

      軸定位/軸運(yùn)算:?jiǎn)聫?fù)古的寫法,但是更加靈活。 

      通過(guò)相對(duì)路徑定位

      //parent::form[@id='form']
      //軸關(guān)系::元素類型[謂語(yǔ)條件]
      //input[@name='ie']//parent::form[@id='form']
      //input[@name='ie']//parent::form[@class, 'value']
      *表示 通配符

      八、CSS定位

      暫時(shí)沒(méi)總結(jié)

       

      實(shí)例練習(xí):

      """ 
       _*_ coding: utf - 8 _*_
       @Time        :2019/7/14:23:32
       @Author      :lemon_qiao
       @Email       :841195863@qq.com
       @File        :八大元素定位練習(xí).py
       @ Software:PyCharm Community Edition
       
       """
      from selenium.webdriver import Chrome
      
      driver = Chrome()
      
      driver.get('http://www.baidu.com')
      
      # 1、ID定位
      by_id = driver.find_element_by_id('kw') # 百度首頁(yè)的輸入框
      print('by_id定位的ype為:【{}】,value為:【{}】'.format(type(by_id), by_id))
      
      # 2、name定位
      by_name = driver.find_element_by_name('wd')  # 百度首頁(yè)的輸入框
      by_name1 = driver.find_elements_by_name('wd')  # 百度首頁(yè)的輸入框
      print('by_name的type為:【{}】,value為:【{}】'.format(type(by_name), by_name))
      print('by_name1的type為:【{}】,value為:【{}】'.format(type(by_name1), by_name1))
      
      # 3、classname定位
      # by_class = driver.find_element_by_class_name('btn self-btn bg s_btn')  有空格會(huì)報(bào)錯(cuò)
      by_class = driver.find_element_by_class_name('s_btn')
      by_class1 = driver.find_elements_by_class_name('s_btn')
      print('by_class的type為:【{}】,value為:【{}】'.format(type(by_class), by_class))
      print('by_class1的type為:【{}】,value為:【{}】'.format(type(by_class1), by_class1))
      
      # 4、tagname標(biāo)簽名定位
      by_tag = driver.find_element_by_tag_name('input')
      print('by_tag的value為:【{}】:'.format(by_tag))
      
      # 5、超鏈接定位
      a = driver.find_element_by_link_text('新聞')
      print('超鏈接定位a的type為:【{}】,value為:【{}】'.format(type(a), a))
      
      # 6、partialLink定位
      b = driver.find_element_by_partial_link_text('新') # 通過(guò)一部分查找
      print('partialLink定位b的ype為:【{}】,value為:【{}】'.format(type(b), b))
      
      # 7、Xpath定位
      c = driver.find_element_by_xpath("http://a[text()='學(xué)術(shù)']")
      # d = driver.find_element_by_xpath("http://span[contains(@class, 'refresh')]")
      d = driver.find_element_by_xpath("http://input[@class='s_ipt' and @name='wd' and @id='kw']")
      print('Xpath定位c的ype為:【{}】,value為:【{}】'.format(type(c), c))
      print('Xpath定位d的ype為:【{}】,value為:【{}】'.format(type(d), d))
      e = driver.find_element_by_xpath("http://a[contains(text(), '123')]")
      f = driver.find_element_by_xpath("http://input[contains(@class, 'ipt')]")
      
      # 軸定位
      h = driver.find_element_by_xpath("http://input[@name='ie']//parent::form[@id='form']")
      print(h)
      

        運(yùn)行結(jié)果:

      by_id定位的ype為:【<class 'selenium.webdriver.remote.webelement.WebElement'>】,value為:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-1")>】
      by_name的type為:【<class 'selenium.webdriver.remote.webelement.WebElement'>】,value為:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-1")>】
      by_name1的type為:【<class 'list'>】,value為:【[<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-1")>]】
      by_class的type為:【<class 'selenium.webdriver.remote.webelement.WebElement'>】,value為:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-2")>】
      by_class1的type為:【<class 'list'>】,value為:【[<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-2")>]】
      by_tag的value為:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-3")>】:
      超鏈接定位a的type為:【<class 'selenium.webdriver.remote.webelement.WebElement'>】,value為:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-4")>】
      partialLink定位b的ype為:【<class 'selenium.webdriver.remote.webelement.WebElement'>】,value為:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-4")>】
      Xpath定位c的ype為:【<class 'selenium.webdriver.remote.webelement.WebElement'>】,value為:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-5")>】
      Xpath定位d的ype為:【<class 'selenium.webdriver.remote.webelement.WebElement'>】,value為:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-1")>】
      <selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-7")>
      

        

       

      posted @ 2019-07-15 00:17  樂(lè)樂(lè)先生  閱讀(1565)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲无线码一区二区三区| 视频一区视频二区视频三| 国产极品美女高潮无套| 五月婷之久久综合丝袜美腿| 精品国产欧美一区二区三区在线| 日韩精品不卡一区二区三区| 日韩国产中文字幕精品| 少妇人妻综合久久中文字幕| 成年无码av片在线蜜芽| 亚洲中文字幕无码爆乳APP| 久热这里只有精品视频3| 高清中文字幕国产精品| 色播久久人人爽人人爽人人片av| 在线观看中文字幕国产码| 久久久这里只有精品10| 日韩区二区三区中文字幕| 亚洲WWW永久成人网站| 日本熟妇XXXX潮喷视频| 日本一区二区三区视频一| 绍兴县| 日韩精品 在线 国产 丝袜| 国产99久久亚洲综合精品西瓜tv| 日日麻批免费40分钟无码| 日韩免费无码视频一区二区三区| 69精品丰满人妻无码视频a片| 久久精品不卡一区二区| 亚洲一区在线成人av| 亚洲av日韩av永久无码电影 | 中文字幕av国产精品| 亚洲色欲色欲www| 亚洲精品不卡av在线播放| 亚洲区综合区小说区激情区| 国产av一区二区亚洲精品| 色www视频永久免费| 日本污视频在线观看| 亚洲成av人片在www鸭子| 怀安县| 亚洲午夜香蕉久久精品| 国产av一区二区午夜福利| 久久av无码精品人妻出轨| xxxx丰满少妇高潮|