2019-03-27 元素定位的常用方法

元素定位應(yīng)該是自動(dòng)化測(cè)試的核心,要想操作一個(gè)元素,首先應(yīng)該識(shí)別這個(gè)元素。

webdriver提供了一系列的元素定位方法,常用的有以下幾種:

id

name

class name

link_text

partial link text

tag_name

xpath

css selector

id和name定位

案例:打開(kāi)百度首頁(yè),在搜索框自動(dòng)輸入“Selenium”關(guān)鍵詞,然后點(diǎn)擊搜索按鈕,查看搜索頁(yè)面。

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

driver.get("https://www.baidu.com")

#driver.find_element_by_id("kw").send_keys("selenium")

driver.find_element_by_name("wd").send_keys("selenium")

sleep(2)

driver.find_element_by_id("su").click()

sleep(3)

driver.quit()

tag name定位

案例:打開(kāi)http://192.168.20.214/videoclient/頁(yè)面,在用戶名輸入框輸入用戶名“vorx”

from selenium import webdriver

from time import sleep

driver = webdriver.Firefox()

driver.get("http://192.168.20.214/videoclient/")

sleep(5)

# 定位標(biāo)簽名為input的元素

#driver.find_element_by_tag_name("input").send_keys("vorx")

#獲取頁(yè)面所有標(biāo)簽名為“input”的標(biāo)簽。

driver.find_elements_by_tag_name("input")[2].send_keys("vorx")

driver.find_elements_by_tag_name("input")[3].send_keys("vorx")

# 點(diǎn)擊登錄按鈕

# driver.find_element_by_id("btnLogin").click()

driver.find_elements_by_tag_name("input")[4].click()

sleep(5)

driver.quit()

class_name定位

根據(jù)標(biāo)簽中屬性class來(lái)進(jìn)行定位的一種方法

案例:打開(kāi)百度首頁(yè),在搜索框自動(dòng)輸入“selenium”,然后點(diǎn)擊搜索按鈕,查看搜索頁(yè)面。

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

driver.get("https://www.baidu.com")

driver.find_element_by_class_name("s_ipt").send_keys("selenium")

sleep(2)

driver.find_element_by_id("su").click()

sleep(3)

driver.quit()

link_text定位

link_test定位就是根據(jù)超鏈接文字進(jìn)行定位。

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

driver.get("https://www.baidu.com/")

driver.find_element_by_link_text("新聞").click()

sleep(2)

driver.find_element_by_partial_link_text("國(guó)內(nèi)").click()

sleep(3)

driver.quit()

XPath定位

XPath即為XML路徑語(yǔ)言,它是一種用來(lái)確定XML文檔中某部分位置的語(yǔ)言。XPath基于XML的樹(shù)狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹(shù)中找尋節(jié)點(diǎn)的能力。

xpath絕對(duì)與相對(duì)定位

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()driver.get("http://www.baidu.com")

# 絕對(duì)路徑定位

#driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[1]/div[1]/div[1]/form/span[1]/input").send_keys("selenium")

# 利用元素屬性定位--定位到input標(biāo)簽中為kw的元素

# driver.find_element_by_xpath("http://input[@id='kw']").send_keys("selenium")

# 定位input標(biāo)簽中name屬性為wd的元素

# driver.find_element_by_xpath("http://input[@name='wd']").send_keys("selenium")

# 定位所有標(biāo)簽元素中,class屬性為s_ipt的元素

driver.find_element_by_xpath("http://*[@class='s_ipt']").send_keys("selenium")

sleep(2)

driver.find_element_by_id("su").click()

sleep(3)

driver.quit()

Xpath層級(jí)與邏輯定位

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

driver.get("http://192.168.20.214/videoclient/")

# 層級(jí)和屬性結(jié)合定位driver.find_element_by_xpath("http://form[@id='form1']/div[4]/div[1]/div[2]/div[2]/input").send_keys("vorx")

driver.find_element_by_xpath("http://form[@id='form1']/div[4]/div[1]/div[2]/div[3]/input").send_keys("vorx")

# 邏輯運(yùn)算組合定位

# driver.find_element_by_xpath("http://input[@class='i-text' and @name='UserName']").send_keys("vorx")

# driver.find_element_by_xpath("http://input[@class='i-text' and @name='PassWord']").send_keys("vorx")

sleep(3)

driver.find_element_by_xpath("http://*[@id='btnLogin']").click()

sleep(3)

driver.quit()

Css定位

Selenium極力推薦使用CSS定位,而不是Xpath來(lái)定位元素,原因是CSS定位比XPath定位速度快,語(yǔ)法也更加簡(jiǎn)潔。

css常用定位方法

1. find element by css selector()

2. #id id選擇器根據(jù)id屬性類定位元素

3. .class class選擇器,根據(jù)class屬性值來(lái)定位元素

4. [attribute=’value’]根據(jù)屬性來(lái)定位元素

5. element>element根據(jù)元素層級(jí)來(lái)定位 父元素>子元素

from selenium import? webdriver

from time import sleep

driver = webdriver.Firefox()

driver.get("http://www.baidu.com")

# 根據(jù)id來(lái)定位

# driver.find_element_by_css_selector("#kw").send_keys("selenium")

# driver.find_element_by_css_selector("#su").click()

# 根據(jù)class定位

# driver.find_element_by_css_selector(".s_ipt").send_keys("selenium")

# driver.find_element_by_css_selector(".bg.s_btn").send_keys("selenium")

# 根據(jù)屬性來(lái)定位

#driver.find_element_by_css_selector(“[autocomplete='off']").send_keys("selenium")

# sleep(3)

# driver.find_element_by_id("su").click()

# sleep(3)

# 通過(guò)元素層級(jí)來(lái)定位driver.find_element_by_css_selector("form#form>span>input").send_keys("selenium")

driver.find_element_by_css_selector("form#form>span>input[type='submit']").click()

sleep(3)

driver.quit()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容