国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python+selenium自動化八大元素定位方法及實例(超詳細)

這篇具有很好參考價值的文章主要介紹了Python+selenium自動化八大元素定位方法及實例(超詳細)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、selenium模塊中的find_element_by_id方法無法使用

二、Python+selenium自動化八大元素定位方法

使用場景:

1、通過id屬性定位:driver.find_element(By.ID,"value")

2、通過name屬性定位:driver.find_element(By.NAME,"value")

3、通過class屬性定位:driver.find_element(By.CLASS_NAME,"value")

4、通過tag_name屬性定位:driver.find_element(By.TAG_NAME,"input")

5、通過link_text屬性定位:driver.find_element(By.LINK_TEXT,"value")

6、通過partial_link屬性定位:driver.find_element(By.PARTIAL_LINK_TEXT,"value")

7、通過xpath屬性定位:find_element_by_xpath()

8、通過css屬性定位:find_element_by_css_selector("css")

補充操作

三、實例


一、selenium模塊中的find_element_by_id方法無法使用

之前學(xué)習(xí)的時候都是白嫖B站大學(xué)的視頻,現(xiàn)在規(guī)范了之后導(dǎo)致之前學(xué)習(xí)的方法會報錯。

例如:selenium模塊中的find_element_by_id方法無法使用,會報錯:

AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'

改用driver.find_element(By.ID,"value"),并導(dǎo)入from selenium.webdriver.common.by import By就可以了。

其他元素定位方法同理修改下即可。

二、Python+selenium自動化八大元素定位方法

使用場景:

①優(yōu)先用id、name(保證唯一性)

②是否是超鏈接,是超鏈接用link_text、partial_link_text,否則用css_selector、xpath

③class_name、tag_name很少用,因為這倆個難以保證被定為元素或?qū)傩缘奈ㄒ恍?/p>

1、通過id屬性定位:driver.find_element(By.ID,"value")

driver.find_element(By.ID,"stu_username_hide").send_keys("1234567879")
driver.find_element(By.ID,"stu_password_hide").send_keys("123456")

2、通過name屬性定位:driver.find_element(By.NAME,"value")

driver.find_element(By.NAME,"username").send_keys("1234567879")
driver.find_element(By.NAME,"password").send_keys("123456")

3、通過class屬性定位:driver.find_element(By.CLASS_NAME,"value")

driver.find_element(By.CLASS_NAME,"Validform_error")

4、通過tag_name屬性定位:driver.find_element(By.TAG_NAME,"input")

driver.find_element(By.TAG_NAME,"input")

5、通過link_text屬性定位:driver.find_element(By.LINK_TEXT,"value")

driver.find_element(By.LINK_TEXT,"登錄")//點擊登錄

6、通過partial_link屬性定位:driver.find_element(By.PARTIAL_LINK_TEXT,"value")

driver.find_element(By.PARTIAL_LINK_TEXT,"登")//模糊匹配帶“登”字的鏈接

7、通過xpath屬性定位:find_element_by_xpath()

driver.find_element(By.XPATH,'/html/body/div/p[1]')//根據(jù)元素的路徑查找

(1)絕對路徑:從最外層元素到指定元素之間所有經(jīng)過元素層級路徑,以/開頭,從源頭標(biāo)簽開始從上到下查找所需元素

例如:/html/body/div/p[1]

(2)相對路徑:從第一個符合條件元素開始(一般配合屬性來區(qū)分),以//開頭,后邊必須跟標(biāo)簽名稱或*(*表示所有標(biāo)簽)

幾個例子:

①相對路徑+索引定位

//標(biāo)簽名/標(biāo)簽名[有同名標(biāo)簽時,所需標(biāo)簽的序號]/標(biāo)簽名

例://form/span[1]/input

②相對路徑+屬性定位

搜索標(biāo)簽名下屬性為屬性名1='屬性值1'的標(biāo)簽://標(biāo)簽名[@屬性名1='屬性值1']

例://input[@autocomplete='off']

③相對路徑+通配符定位

搜索整個網(wǎng)頁找到標(biāo)簽里有屬性名1='屬性值1'的標(biāo)簽://標(biāo)簽名*[@屬性名1='屬性值1']

例://input[@autocomplete='off']

搜索整個網(wǎng)頁找到標(biāo)簽里有屬性值為'屬性值1'的標(biāo)簽://標(biāo)簽名*[@*='屬性值1']

例://input[@*='off']

④相對路徑+部分屬性值定位

搜素屬性值以x開頭的標(biāo)簽://*[starts-with(@屬性名,'x')]

例://*[starts-with(@autocomplete,'of')]

搜素屬性值以x結(jié)尾的標(biāo)簽://*[substring(@屬性名.a,'x')]

例://*[substring(@autocomplete,'ff')]

搜素屬性值包含x的標(biāo)簽://*[contains(@屬性名,'x')]

例://*[contains(@autocomplete,'ff')]

⑤相對路徑+文本定位

//標(biāo)簽名[text()='x')]? ? ? ? ? 或? ? ? ?//*[text()="xxx"]

例://span[text()='按圖片搜索')]

8、通過css屬性定位:find_element_by_css_selector("css")

driver.find_element(By.CSS_SELECTOR, '#id')//根據(jù)id查找

提示:在selenium中極力推薦css定位,因為它比XPath定位速度要快;css選擇器語法非常強大。

(1)id選擇器

使用#號表示id屬性,如:driver.find_element(By.CSS_SELECTOR, '#user')

(2)class選擇器

使用.表示class屬性,如:driver.find_element(By.CSS_SELECTOR, '.tel')

(3)通過標(biāo)簽名定位

格式:element,如:driver.find_element(By.CSS_SELECTOR, 'input')

(4)通過屬性或部分屬性定位

格式:[”attribute=value”]

以字符^指明從字符串的開始匹配,以字符以字符*指明在需要進行模糊查詢,以字符$指明在字符串的結(jié)尾匹配。

舉例說明:

driver.find_element(By.CSS_SELECTOR,"[autocomplete='off']")//查找屬性autocomplete='off'的元素

driver.find_element(By.CSS_SELECTOR,"[autocomplete='off'][name='user']")//查找屬性autocomplete='off'且name='user'的元素

//通過部分屬性值定位

driver.find_elemen(By.CSS_SELECTOR,"[autocomplete^='o']")//查找autocomplete屬性值從o開始的元素

driver.find_elemen(By.CSS_SELECTOR,"[autocomplete*='f']")//查找autocomplete屬性值含有f的元素
driver.find_elemen(By.CSS_SELECTOR,"[autocomplete$='f']")//查找autocomplete屬性值以f結(jié)尾的元素

(5)層級選擇器

根據(jù)元素的父子關(guān)系來選擇,層級定位一般很難唯一定位到元素,所以一般情況下層級跟id/class/屬性或者部分屬性值一起組合定位。
格式:element>element,> 可以用空格代替

舉例說明:

driver.find_element(By.CSS_SELECTOR,"form>span>input")

driver.find_element(By.CSS_SELECTOR,"form span input")

driver.find_element(By.CSS_SELECTOR,"form>span>input>[type='password']")

driver.find_element(By.CSS_SELECTOR,"form span input [type='password']")

(6)通過兄弟節(jié)點定位(通過元素的并列索引定位)

說明:兄弟節(jié)點就是同一父級元素下,存在多個相同子標(biāo)簽,那么這些子元素就是兄弟節(jié)點。

舉例說明:

存在多個并列的<a></a>標(biāo)簽

selenium通過屬性定位,selenium,自動化,測試工具

?通過索引a:nth-child(1)來定位子元素

//選擇第1個<a>里元素
driver.find_element(By.CSS_SELECTOR,"div#s-top-left>a:nth-child(1)")
//選擇第2個<a>里元素
driver.find_element(By.CSS_SELECTOR,"div#s-top-left>a:nth-child(2)")
//選擇第n個<a>里元素
driver.find_element(By.CSS_SELECTOR,"div#s-top-left>a:nth-child(n)")

補充操作

1、send_keys函數(shù):模擬輸入?yún)?shù)

2、clear函數(shù):清空數(shù)據(jù),無參

3、click函數(shù):點擊元素,無參

#在元素id=user的地方輸入"admin"
driver.find_element(By.CSS_SELECTOR, '#user').send_key("admin")

#清除元素id=user的原先內(nèi)容
driver.find_element(By.CSS_SELECTOR, '#user').clear() ?

#點擊元素id=user的地方
driver.find_element(By.CSS_SELECTOR, '#user').click() ?

4、maximize_window()? 模擬瀏覽器最大化按鈕

5、set_window_size(100,100)? ? 設(shè)置瀏覽器大小

6、set_window_position(300,200)? ?設(shè)置瀏覽器位置

7、back() 控制瀏覽器后退

8、forward() 控制瀏覽器前進

9、refresh() 刷新當(dāng)前頁面

10、close()? 關(guān)閉當(dāng)前窗口

11、quit()? ?關(guān)閉所有WebDriver啟動的窗口

三、實例

實例一

需求:1)打開登錄A.html頁面,使用id定位,自動填寫賬號:admin、密碼:123456;

? ? ? ? 2)點擊登錄按鈕

? ? ? ? 3)登錄成功3秒后關(guān)閉瀏覽器窗口

步驟:1、導(dǎo)包

from time import sleep

from selenium import webdriver

from selenium.webdriver.common.by import By

2、實例化瀏覽器對象

driver = webdriver.Chrome()

3、打開項目

driver.get(url)

4、找到元素填寫

driver.find_element(By.ID,"username").send_keys("admin") driver.find_element(By.ID,"password").send_keys("123456")

5、點擊登錄按鈕

driver.find_element(By.LINK_TEXT,"登錄").click()

6、3秒后關(guān)閉瀏覽器

sleep(3)

driver.quit()

實現(xiàn):文章來源地址http://www.zghlxwxcb.cn/news/detail-827723.html

#1、導(dǎo)包
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By

#2、實例化瀏覽器對象
driver = webdriver.Chrome()

#3、打開url
driver.get("index.html")

#4、查找操作元素
driver.find_element(By.ID,"stu_username_hide").send_keys("1234567879")
driver.find_element(By.ID,"stu_password_hide").send_keys("123456")

#5、關(guān)閉瀏覽器
sleep(3)
driver.quit()

到了這里,關(guān)于Python+selenium自動化八大元素定位方法及實例(超詳細)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包