當(dāng)我們想讓 Selenium 自動地操作瀏覽器時(shí),就必須告訴 Selenium 如何去定位某個(gè)元素或一組元素,每個(gè)元素都有著不同的標(biāo)簽名和屬性值,Selenium 提供了以下8種定位元素的方式,每種方式對應(yīng)了2個(gè)方法:
find_element_by_( ),是用來定位單個(gè)元素的,find_elements_by_( ),是用來定位多個(gè)元素的。
通過 id 定位
通過 name 定位
通過 class 定位
通過 tag 定位
通過 link 定位
通過 partial link 定位
通過 xpath 定位
通過 css 選擇器定位
下面以百度首頁為例進(jìn)行舉例說明:
1.通過 id 定位find_element_by_id(id)
find_elements_by_id(id)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位id為“kw”的元素 input_text = driver.find_element_by_id("kw") input_text.send_keys("selenium") driver.quit()2.通過通過 name 定位
find_element_by_name(name)
find_elements_by_name(name)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位name為“wd”的元素 input_text = driver.find_element_by_name("wd") input_text.send_keys("selenium") driver.quit()3.通過 class 定位
find_element_by_class_name(name)
find_elements_by_class_name(name)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位class名稱為“s_ipt”的元素 input_text = driver.find_element_by_class_name("s_ipt") input_text.send_keys("selenium") driver.quit()4.通過 tag 定位
find_element_by_tag_name(name)
find_elements_by_tag_name(name)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位標(biāo)簽為的元素 input_text = driver.find_elements_by_tag_name("input") print(len(input_text)) driver.quit()5.通過 link 定位
find_element_by_link_text(link_text)
find_elements_by_link_text(link_text)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位鏈接文本完全匹配“我新聞”的元素 news = driver.find_element_by_link_text("新聞") news.click() driver.quit()6.通過 partial link 定位
find_element_by_partial_link_text(link_text)
find_elements_by_partial_link_text(link_text)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位鏈接文本部分匹配“新”的元素 news = driver.find_element_by_partial_link_text("新") news.click() driver.quit()7.通過 xpath 定位
find_element_by_xpath(xpath)
find_elements_by_xpath(xpath)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # xpath定位,相對路徑與屬性結(jié)合定位搜索框 news = driver.find_element_by_xpath("http://input[@id="kw"]") news.click() driver.quit()8.通過 css 選擇器定位
find_element_by_css_selector(css_selector)
find_elements_by_css_selector(css_selector)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # css選擇器,id定位密碼輸入框 news = driver.find_element_by_css_selector("#kw") news.click() driver.quit()
這里只是簡單介紹了8種元素定位方式的使用,比較簡單易用的是通過id、name、class定位,我個(gè)人比較喜歡的是用xpath定位,當(dāng)然,最靈活也是最強(qiáng)大的定位方式就是css,它也是比較難掌握的一種方式。關(guān)于xpath和css定位方式的詳細(xì)介紹,可以參考
selenium 元素定位。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43257.html
摘要:注意如果上述腳本無法正常啟動瀏覽器,需要先檢查與瀏覽器的版本是否一致然后再檢查瀏覽器對應(yīng)的文件是否放在的安裝目錄下,如系統(tǒng)的默認(rèn)安裝路徑,,如果沒有請將該文件放在此目錄下,然后再次運(yùn)行腳本。 第一個(gè)自動化測試腳本 腳本如下所示: # _*_ coding:utf-8 _*_ from selenium import webdriver from selenium.webdriver....
摘要:前面一節(jié)主要介紹了類,這一節(jié)則主要介紹類。提供了一些功能屬性和方法來實(shí)現(xiàn)與網(wǎng)頁元素的交互,這些元素主要包括文本框文本域按鈕單選框多選框表格等等。 前面一節(jié)主要介紹了 WebDriver 類,這一節(jié)則主要介紹 WebElement 類。WebElement 提供了一些功能、屬性和方法來實(shí)現(xiàn)與網(wǎng)頁元素的交互,這些元素主要包括文本框、文本域、按鈕、單選框、多選框、表格等等。 WebEleme...
摘要:和是中兩個(gè)非常重要的類,使用它們提供的方法可以實(shí)現(xiàn)與瀏覽器和頁面元素的各種交互操作。該方法在每個(gè)只需要調(diào)用一次等待時(shí)間單位為秒設(shè)置一個(gè)頁面完全加載完成的超時(shí)等待時(shí)間等待時(shí)間單位為秒設(shè)置腳本執(zhí)行的超時(shí)時(shí)間,應(yīng)該在拋出錯誤之前等待時(shí)間單位為秒 WebDriver 和 WebElement 是 Selenium 中兩個(gè)非常重要的類,使用它們提供的方法可以實(shí)現(xiàn)與瀏覽器和頁面元素的各種交互操作。...
摘要:華文宋體驗(yàn)證搜索結(jié)果頁面的標(biāo)題是否是自動化測試百度搜索。華文宋體移除了華文宋體版本的華文宋體也就是說,華文宋體不再得到官方的支持。一、自動化測試概念1、概念java:TestNgpython:unittest pytest2、自動化測試可行性測試目的明確,需求不會頻繁的變更對于項(xiàng)目的自動化測試,要看項(xiàng)目的具體情況一個(gè)產(chǎn)品需要在多個(gè)環(huán)境下部署對于web GUI測試,需要測試用例在不同的瀏覽器上...
摘要:最近一直在學(xué)習(xí)自動化測試相關(guān)的內(nèi)容,于是決定將整個(gè)學(xué)習(xí)過程記錄在這里,一方面可以作為筆記方便自己以后隨時(shí)隨地地查看,另一方面也希望分享出來能夠和大家一起學(xué)習(xí)討論進(jìn)步。 最近一直在學(xué)習(xí)UI自動化測試相關(guān)的內(nèi)容,于是決定將整個(gè)學(xué)習(xí)過程記錄在這里,一方面可以作為筆記方便自己以后隨時(shí)隨地地查看,另一方面也希望分享出來能夠和大家一起學(xué)習(xí)討論進(jìn)步。 需要準(zhǔn)備的環(huán)境 Python 2 Seleni...
閱讀 2996·2023-04-26 00:23
閱讀 3407·2021-09-13 10:28
閱讀 2192·2021-08-31 14:18
閱讀 2895·2019-08-30 15:54
閱讀 1951·2019-08-30 15:43
閱讀 1286·2019-08-29 16:56
閱讀 2810·2019-08-29 14:16
閱讀 2063·2019-08-28 17:51