當我們想讓 Selenium 自動地操作瀏覽器時,就必須告訴 Selenium 如何去定位某個元素或一組元素,每個元素都有著不同的標簽名和屬性值,Selenium 提供了以下8種定位元素的方式,每種方式對應了2個方法:
find_element_by_( ),是用來定位單個元素的,find_elements_by_( ),是用來定位多個元素的。
通過 id 定位
通過 name 定位
通過 class 定位
通過 tag 定位
通過 link 定位
通過 partial link 定位
通過 xpath 定位
通過 css 選擇器定位
下面以百度首頁為例進行舉例說明:
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/") # 定位標簽為的元素 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定位,相對路徑與屬性結合定位搜索框 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定位,我個人比較喜歡的是用xpath定位,當然,最靈活也是最強大的定位方式就是css,它也是比較難掌握的一種方式。關于xpath和css定位方式的詳細介紹,可以參考
selenium 元素定位。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43257.html
摘要:注意如果上述腳本無法正常啟動瀏覽器,需要先檢查與瀏覽器的版本是否一致然后再檢查瀏覽器對應的文件是否放在的安裝目錄下,如系統的默認安裝路徑,,如果沒有請將該文件放在此目錄下,然后再次運行腳本。 第一個自動化測試腳本 腳本如下所示: # _*_ coding:utf-8 _*_ from selenium import webdriver from selenium.webdriver....
摘要:前面一節主要介紹了類,這一節則主要介紹類。提供了一些功能屬性和方法來實現與網頁元素的交互,這些元素主要包括文本框文本域按鈕單選框多選框表格等等。 前面一節主要介紹了 WebDriver 類,這一節則主要介紹 WebElement 類。WebElement 提供了一些功能、屬性和方法來實現與網頁元素的交互,這些元素主要包括文本框、文本域、按鈕、單選框、多選框、表格等等。 WebEleme...
摘要:和是中兩個非常重要的類,使用它們提供的方法可以實現與瀏覽器和頁面元素的各種交互操作。該方法在每個只需要調用一次等待時間單位為秒設置一個頁面完全加載完成的超時等待時間等待時間單位為秒設置腳本執行的超時時間,應該在拋出錯誤之前等待時間單位為秒 WebDriver 和 WebElement 是 Selenium 中兩個非常重要的類,使用它們提供的方法可以實現與瀏覽器和頁面元素的各種交互操作。...
摘要:華文宋體驗證搜索結果頁面的標題是否是自動化測試百度搜索。華文宋體移除了華文宋體版本的華文宋體也就是說,華文宋體不再得到官方的支持。一、自動化測試概念1、概念java:TestNgpython:unittest pytest2、自動化測試可行性測試目的明確,需求不會頻繁的變更對于項目的自動化測試,要看項目的具體情況一個產品需要在多個環境下部署對于web GUI測試,需要測試用例在不同的瀏覽器上...
摘要:最近一直在學習自動化測試相關的內容,于是決定將整個學習過程記錄在這里,一方面可以作為筆記方便自己以后隨時隨地地查看,另一方面也希望分享出來能夠和大家一起學習討論進步。 最近一直在學習UI自動化測試相關的內容,于是決定將整個學習過程記錄在這里,一方面可以作為筆記方便自己以后隨時隨地地查看,另一方面也希望分享出來能夠和大家一起學習討論進步。 需要準備的環境 Python 2 Seleni...
閱讀 2984·2023-04-26 00:23
閱讀 3399·2021-09-13 10:28
閱讀 2178·2021-08-31 14:18
閱讀 2885·2019-08-30 15:54
閱讀 1939·2019-08-30 15:43
閱讀 1276·2019-08-29 16:56
閱讀 2800·2019-08-29 14:16
閱讀 2054·2019-08-28 17:51