一、元素定位的目的
元素的定位是自動(dòng)化測(cè)試核心。要操作一個(gè)對(duì)象,首先要識(shí)別定位或找到這個(gè)對(duì)象。為了實(shí)現(xiàn)網(wǎng)頁(yè)整體布局,我們先要知道,一個(gè)元素,是如何定位到頁(yè)面上的某個(gè)位置的,這就是元素定位。
二、八大元素定位法
系統(tǒng)環(huán)境
Windows 11 ??
python3.10.5 ??
selenium 4.8.0 ??
注意:以下每種定位方式均有一個(gè)案例來(lái)展現(xiàn)。
1、id定位元素
id是當(dāng)前整個(gè)HTML頁(yè)面中唯一的,所以可以通過(guò)id屬性來(lái)唯一定位一個(gè)元素,是首選的元素定位方式。首先打開(kāi)百度頁(yè)面,通過(guò)右擊->檢查或者快捷鍵F12打開(kāi)開(kāi)發(fā)者工具,定位到百度搜索框的位置。然后通過(guò)send_key輸入關(guān)鍵詞,自動(dòng)點(diǎn)擊“百度一下”進(jìn)行搜索,最后退出瀏覽器。通過(guò)該案例能夠?qū)W會(huì)此定位元素方法。

from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)百度頁(yè)面
driver.get("https://www.baidu.com/")
# 定位到百度搜索框通過(guò)id定位元素的方式
# .send_keys()發(fā)送關(guān)鍵詞
driver.find_element(By.ID, "kw").send_keys("python")
# 通過(guò)id定位到百度一下按鈕,點(diǎn)擊一下
driver.find_element(By.ID, "su").click()
# 延時(shí)3秒
sleep(3)
# 退出瀏覽器
driver.quit()
2、name元素定位
根據(jù)元素的name來(lái)定位屬性,但name并不是唯一的。
name方式:1、元素中必須要有name的屬性 2、name的屬性在頁(yè)面中如果是唯一的,那么可以準(zhǔn)確的定位到元素(不是唯一的,默認(rèn)返回的是第一個(gè)元素)
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)百度頁(yè)面
driver.get("https://www.baidu.com/")
# 定位到百度搜索框通過(guò)name定位元素的方式
# name方式:1、元素中必須要有name的屬性 2、name的屬性在頁(yè)面中如果是唯一的,那么可以準(zhǔn)確的定位到元素(不是唯一的,默認(rèn)返回的是第一個(gè)元素)
driver.find_element(By.NAME, "wd").send_keys("python")
# 通過(guò)id定位到百度一下按鈕,點(diǎn)擊一下
driver.find_element(By.ID, "su").click()
# 延時(shí)3秒
sleep(3)
# 退出瀏覽器
driver.quit()
3、class_name元素定位
根據(jù)Class定位屬性,主要是用來(lái)元素進(jìn)行分組,并對(duì)這一級(jí)元素設(shè)置相同的樣式。所以class屬性在當(dāng)前html頁(yè)面當(dāng)中,也是不能唯一定位到一個(gè)元素的。
class_name定位元素:1、在元素中需要有class的屬性;2、class的屬性值不是唯一的,那么不能唯一的定位到指定的元素。
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)百度頁(yè)面
driver.get("https://www.baidu.com/")
# 定位到百度搜索框通過(guò)class定位元素的方式
# class_name定位元素:1、在元素中需要有class的屬性;2、class的屬性值不是唯一的,那么不能唯一的定位到指定的元素
driver.find_element(By.CLASS_NAME, "s_ipt").send_keys("python")
# 通過(guò)id定位到百度一下按鈕,點(diǎn)擊一下
driver.find_element(By.ID, "su").click()
# 延時(shí)3秒
sleep(3)
# 退出瀏覽器
driver.quit()
4、tag_name元素定位
tag_name是通過(guò)標(biāo)簽名稱來(lái)定位的,如<input>標(biāo)簽。
tag_name定位元素:標(biāo)簽名是會(huì)重復(fù),默認(rèn)返回的是第一個(gè)符合的元素。
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)百度頁(yè)面
driver.get("https://www.taobao.com/")
# 定位到百度搜索框通過(guò)tag_name定位元素的方式
# tag_name定位元素:1、標(biāo)簽名是會(huì)重復(fù),默認(rèn)返回的是第一個(gè)符合的元素
driver.find_element(By.TAG_NAME, "input").send_keys("三體")
# 延時(shí)3秒
sleep(3)
# 退出瀏覽器
driver.quit()
5、link_text元素定位
link_text 只能使用精準(zhǔn)的匹配(a標(biāo)簽的全部文本內(nèi)容)。
link_text定位:必須根據(jù)鏈接上完整的文本內(nèi)容去進(jìn)行定位。
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)百度頁(yè)面
driver.get("https://www.baidu.com/")
# 定位到百度搜索框通過(guò)link_text定位元素的方式
# link_text定位元素:1、必須根據(jù)鏈接上完整的文本內(nèi)容去進(jìn)行定位。
driver.find_element(By.LINK_TEXT, "新聞").click()
# 延時(shí)3秒
sleep(3)
# 退出瀏覽器
driver.quit()
6、partial_link_text元素定位
partial_link_text可以使用精準(zhǔn)或模糊匹配,如果使用模糊匹配最好能使用可以唯一的關(guān)鍵字;如果有多個(gè)值,默認(rèn)返回第一個(gè)值。
partial_link_text定位:定位的鏈接文本內(nèi)容在整個(gè)頁(yè)面當(dāng)中唯一的出現(xiàn)一次,那么可以準(zhǔn)確定位到元素,否則默認(rèn)返回第一個(gè)值。
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)百度頁(yè)面
driver.get("https://www.baidu.com/")
# 定位到百度輸入框,搜索熱點(diǎn)新聞
driver.find_element(By.ID, "kw").send_keys("熱點(diǎn)新聞")
# 定位到百度一下按鈕,并且點(diǎn)擊
driver.find_element(By.ID, "su").click()
# 停留3秒,加載頁(yè)面
sleep(3)
# 從返回的結(jié)果頁(yè)面,通過(guò)模糊匹配定位到包含了“騰訊網(wǎng)”的超連接
# partial_link_text定位:定位的鏈接文本內(nèi)容在整個(gè)頁(yè)面當(dāng)中唯一的出現(xiàn)一次,那么可以準(zhǔn)確定位到元素,否則默認(rèn)返回第一個(gè)
# .click()點(diǎn)擊的操作
driver.find_element(By.PARTIAL_LINK_TEXT, "騰訊網(wǎng)").click()
# 延時(shí)3秒
sleep(5)
# 退出瀏覽器
driver.quit()
7、xpath元素定位
7-1、xpath簡(jiǎn)介
xpath即是XML Path的簡(jiǎn)稱,它是一門(mén)在XML文檔中查找元素信息的語(yǔ)言。
7-2、使用xpath目的
在前面寫(xiě)的定位方式不能實(shí)現(xiàn)的時(shí)候使用。
id、name、class_name定位前提是要有這個(gè)屬性,否則不能定位。
tag_name方式如果有很多相同的標(biāo)簽名,定位不方便。
link的定位方式只是針對(duì)超鏈接的。
7-3、xpath語(yǔ)法
xpath語(yǔ)法 | |
表達(dá)式 |
說(shuō)明 |
/aaa |
選取根節(jié)點(diǎn)為aaa的元素 |
/aaa/bbb |
選取aaa標(biāo)簽下的bbb標(biāo)簽 |
//aaa |
選取所有aaa的標(biāo)簽元素 |
//aaa/bbb |
選取所有父元素為aaa的bbb元素 |
. |
選取當(dāng)前節(jié)點(diǎn) |
.. |
選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn) |

注意:以下方式大部分使用該案例。
7-4-1、xpath定位方式一(絕對(duì)路徑)
語(yǔ)法:以單斜杠開(kāi)頭逐級(jí)開(kāi)始編寫(xiě),不能跳級(jí)。如:("html/body/div/div/form/input")。
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# 定位到姓名輸入框
# xpath定位方式一:絕對(duì)路徑
driver.find_element(By.XPATH, "html/body/div/form/fieldset/table/tbody/tr/td/input").send_keys("admin")
# 延時(shí)3秒
sleep(5)
# 退出瀏覽器
driver.quit()
7-4-2、xpath定位方式二(相對(duì)路徑)
相對(duì)路徑是只給出元素路徑的部分信息,在 html 的任意層次中尋找符合條件的元素。(元素名不知道,可用*)語(yǔ)法:以雙斜杠開(kāi)頭,雙斜杠后邊跟元素名稱。如://input。
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# 定位到多行文本輸入框(簡(jiǎn)介)
# xpath定位方式二:相對(duì)路徑
driver.find_element(By.XPATH, "http://textarea").send_keys("這是一個(gè)簡(jiǎn)介。")
# 延時(shí)3秒
sleep(5)
# 退出瀏覽器
driver.quit()
7-4-3、xpath定位方式三(路徑結(jié)合屬性)
語(yǔ)法://input[@id='id值']。
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# 定位到密碼輸入框
# xpath定位方式三:路徑結(jié)合屬性的形式(定位到密碼輸入框)
driver.find_element(By.XPATH, "http://input[@id='Password1']").send_keys("123456789")
# 延時(shí)3秒
sleep(5)
# 退出瀏覽器
driver.quit()
7-4-4、xpath定位方式四(文本內(nèi)容匹配)
語(yǔ)法://a[text()="新聞"],標(biāo)簽為a文本信息為"新聞"。
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get("https://www.hao123.com/")
# 延時(shí)3秒
sleep(3)
# xpath定位方式四:文本內(nèi)容匹配(定位到hao123當(dāng)中的京東鏈接)
driver.find_element(By.XPATH, "http://a[text()='京東']").click()
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
7-4-5、xpath定位方式五(部分文本信息包含匹配)
語(yǔ)法://a[contains(text(),"新")] 或者 //a[contains(text(),"聞")]
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get("https://www.hao123.com/")
# 延時(shí)3秒
sleep(3)
# xpath定位方式五:部分文本內(nèi)容進(jìn)行匹配(定位到hao123當(dāng)中的嗶哩嗶哩鏈接)
driver.find_element(By.XPATH, "http://a[contains(text(), '嗶哩')]").click()
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
7-4-6、xpath定位方式六(路徑結(jié)合邏輯)
語(yǔ)法://標(biāo)簽名[@屬性名='屬性值' and @屬性名='屬性值']
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# xpath定位方式六:通過(guò)多個(gè)屬性定位到姓名2輸入框
driver.find_element(By.XPATH, "http://input[@name='Name' and @id='t2']").send_keys("第二個(gè)姓名")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
7-4-7、xpath定位方式七(通過(guò)父級(jí)定位子級(jí)元素)
語(yǔ)法://標(biāo)簽名(或*)[@父級(jí)屬性名='父級(jí)屬性值']/input。
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# xpath定位方式七:通過(guò)父級(jí)定位子級(jí)元素
driver.find_element(By.XPATH, "http://td[@id='id1']/input").send_keys("通過(guò)父級(jí)定位到子級(jí)")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
7-4-8、xpath定位方式八(直接復(fù)制法)
通過(guò)手動(dòng)定位到的標(biāo)簽,點(diǎn)擊右擊復(fù)制xpath元素,直接復(fù)制到代碼里。如下所示。

from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# xpath定位方式七:通過(guò)父級(jí)定位子級(jí)元素
driver.find_element(By.XPATH, "http://*[@id='e1']").send_keys("直接復(fù)制定位到郵箱")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
8、CSS選擇器定位
8-1、CSS選擇器簡(jiǎn)介
CSS是一種標(biāo)記語(yǔ)言,在CSS標(biāo)記語(yǔ)言中找元素使用CSS選擇器,極力推薦使用CSS,CSS查找效率高,語(yǔ)法簡(jiǎn)單。
8-2、CSS選擇器定位方式(十四種)
id選擇器(語(yǔ)法:#id,如:#a1)
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# 定位到姓名輸入框
# css定位方式一:id選擇器定位
driver.find_element(By.CSS_SELECTOR, "#t1").send_keys("CSS選擇器")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
class選擇器(語(yǔ)法:.class,如:.cA)
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# 定位到密碼輸入框
# css定位方式二:class選擇器定位(密碼框)
driver.find_element(By.CSS_SELECTOR, ".passwd").send_keys("class")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
元素選擇器(語(yǔ)法:element,如:input)
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# css定位方式三:元素選擇器定位(標(biāo)簽名定位)(定位到簡(jiǎn)介多行文本框)
driver.find_element(By.CSS_SELECTOR, "textarea").send_keys("這是元素選擇器定位。")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
通用選擇器(語(yǔ)法:*,用于匹配任何元素)
(無(wú)代碼演示)
多元素選擇器E,F(xiàn)(E,F(xiàn)同時(shí)匹配所有E元素或F元素,E和F之間用逗號(hào)分隔)
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# css定位方式五:多元素選擇器(同時(shí)定位到姓名和密碼輸入框)
# find_elements(By.CSS_SELECTOR, "元素")返回的是一個(gè)列表類型的元素,如果想定位到具體的元素,可以通過(guò)索引去拿(索引是從0開(kāi)始)
driver.find_elements(By.CSS_SELECTOR, "#t1,.passwd")[1].send_keys("5201314")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
后代元素選擇器E F(匹配所有屬于E元素后代的F元素,E和F之間用空格分隔)
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# css定位方式六:后代選擇器(定位到多行文本輸入框,簡(jiǎn)介)
# 后代選擇器,可以隔代,可以通過(guò)父與子的關(guān)系定位,還可以通過(guò)爺爺與孫子的關(guān)系定位
driver.find_element(By.CSS_SELECTOR, "tr textarea").send_keys("這是后代選擇器定位。")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
子元素選擇器E>F(匹配所有E元素的子元素F)
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# css定位方式七:子元素選擇器(定位到多行文本輸入框,簡(jiǎn)介)
# 子元素選擇器是必須直接子級(jí)才可以定位,隔代則定位不了
driver.find_element(By.CSS_SELECTOR, "td>textarea").send_keys("子元素選擇器定位。")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
毗鄰元素選擇器E+F(匹配緊隨E元素之后的同級(jí)元素F,只匹配第一個(gè))
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class7\test02.html")
# css定位方式八:毗鄰元素選擇器(定位到表單test里面的input標(biāo)簽)
driver.find_element(By.CSS_SELECTOR, "p+input").send_keys("毗鄰元素選擇器")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
同級(jí)元素器E~F(E~F匹配所有在E元素之后的同級(jí)F元素)
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class7\test02.html")
# css定位方式九:同級(jí)元素選擇器(定位到表單test2里面的input標(biāo)簽)
driver.find_element(By.CSS_SELECTOR, "p~input").send_keys("同級(jí)元素選擇器")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
標(biāo)簽名[屬性名='屬性值'](指定標(biāo)簽名下的符合[]里面屬性條件的元素,區(qū)分大小寫(xiě))
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# css定位方式十:標(biāo)簽結(jié)合屬性定位元素:標(biāo)簽名[屬性名='屬性值']
driver.find_element(By.CSS_SELECTOR, "input[id='Password1']").send_keys("123456789")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
標(biāo)簽名[屬性名^='a'](屬性值以a開(kāi)頭的標(biāo)簽元素,區(qū)分大小寫(xiě))
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# css定位方式十一:標(biāo)簽名結(jié)合屬性定位元素:標(biāo)簽名[屬性名^='a'](屬性值以a開(kāi)頭)
# 案例:定位到第一個(gè)表單注冊(cè)頁(yè)面的密碼輸入框
driver.find_element(By.CSS_SELECTOR, "input[name^='P']").send_keys("123456789")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
標(biāo)簽名[屬性名$='a'](屬性的值以a結(jié)尾的指定標(biāo)簽名的元素,區(qū)分大小寫(xiě))
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# css定位方式十二:標(biāo)簽名結(jié)合屬性定位元素:標(biāo)簽名[屬性名$='a'](屬性值以a結(jié)尾)
# 案例:定位到第一個(gè)表單注冊(cè)頁(yè)面的密碼輸入框
driver.find_element(By.CSS_SELECTOR, "input[name$='d']").send_keys("123456789")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
標(biāo)簽名[屬性名*='a'](屬性的值包括a 的指定標(biāo)簽的元素)
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# css定位方式十三:標(biāo)簽名結(jié)合屬性定位元素:標(biāo)簽名[屬性名*='a'](屬性值包含a)
# 案例:定位到第一個(gè)表單注冊(cè)頁(yè)面的密碼輸入框
driver.find_element(By.CSS_SELECTOR, "input[name*='w']").send_keys("123456789")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
標(biāo)簽名[屬性1='a'][屬性2*='b']
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
# 定義一個(gè)谷歌瀏覽器的對(duì)象
driver = webdriver.Chrome()
# 打開(kāi)測(cè)試頁(yè)面
driver.get(r"D:\Python_code\software_test\Class6\test.html")
# css定位方式十四:標(biāo)簽名結(jié)合多個(gè)屬性定位:標(biāo)簽名[屬性1='a'][屬性2*='b']
# 案例:定位到第一個(gè)表單注冊(cè)頁(yè)面的姓名2輸入框
driver.find_element(By.CSS_SELECTOR, "input[name='Name'][id='t2']").send_keys("123456789")
# 延時(shí)5秒
sleep(5)
# 退出瀏覽器
driver.quit()
三、總結(jié)
極力推薦使用CSS選擇器定位。原因:CSS查找效率高,語(yǔ)法簡(jiǎn)單。如果有ID屬性,使用#id。如果沒(méi)有id屬性,使用其他有的屬性(能代表唯一的屬性),如果屬性都代表不了唯一,使用層級(jí)。如果CSS定位解決不了,使用xpath定位方式。
本博主還整合了以上的演示方法源碼,可供大家參考 ??文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-778484.html
八大元素定位方式參考源碼 ??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-778484.html

到了這里,關(guān)于自動(dòng)化測(cè)試之八大元素定位方式(python3.10+selenium4)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!