一、查看頁面元素
示例:使用 Chrome 瀏覽器打開百度首頁,按 F12 進入開發者工具或者右鍵單擊“檢查”,點擊方框中的箭頭,滑鼠移動到需要檢查的元素就可以查看到元素相關的代碼了,
對于一些元素如設定->高級搜索無法定位時,可以在滑鼠懸浮在設定上調出高級搜索后,按 ctrl + shift + c 來定位,
二、元素定位
WebDriver 提供了八種元素定位方法:id、name、class name、 tag name、 link text、 partial link text、 xpath、 css selector,
2.1 find_element_by_id()、find_elements_by_id()
通過元素的 id 屬性定位,find_element_by_id() 定位單個元素,如果找不到元素將回傳 NoSuchElementException 例外;find_elements_by_id() 定位一組元素,回傳一個串列,
# 例:定位百度首頁搜索輸入框,send_keys 用于輸入文本
#"kw" name="wd" value="" maxlength="255" autocomplete="off">
driver.find_element_by_id("kw").send_keys("test")
2.2 find_element_by_class_name()、find_elements_by_class_name()
通過元素的 class 屬性定位
# 例:定位百度首頁搜索輸入框,并輸入 test
# "kw" name="wd" value="" maxlength="255" autocomplete="off">
driver.find_element_by_class_name("s_ipt").send_keys("test")
2.3 find_element_by_name()、find_elements_by_name()
# 例:定位百度首頁搜索輸入框,并輸入 test
# "kw" name="wd" value="" maxlength="255" autocomplete="off">
driver.find_element_by_name("wd").send_keys("test")
2.4 find_element_by_tag_name()、find_elements_by_tag_name()
# 找到百度首頁所有的 input 標簽元素
eles = driver.find_elements_by_tag_name("input")
2.5 find_element_by_link_text()、find_elements_by_link_text()
通過鏈接文本來定位元素,文本完全匹配時才可定位到
# 定位百度到新聞并點擊
# 新聞
driver.find_element_by_link_text("新聞").click()
2.6 find_element_by_partial_link_text()、find_elements_by_partial_link_text()
同 find_element_by_link_text(), 通過鏈接文本來定位元素,只要部分匹配到即可
# 定位百度到新聞并點擊
# 新聞
driver.find_element_by_partial_link_text("新").click()
2.7 find_element_by_css_selector()、find_elements_by_css_selector()
# 例:定位百度首頁搜索輸入框,并輸入 test
# "kw" name="wd" value="" maxlength="255" autocomplete="off">
driver.find_element_by_css_selector('#kw').send_keys("test")
2.8 find_element_by_xpath()、find_elements_by_xpath()
# 例:定位百度首頁搜索輸入框,并輸入 test
# "kw" name="wd" value="" maxlength="255" autocomplete="off">
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("test")
注:也可以通過 find_element 和 find_elements 來獲取元素,需要配合 By 類一起使用,如:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 找到百度的搜索框并輸入 test
driver.find_element(By.ID, "kw").send_keys("test")
理想狀態下可以通過 id、class來定位元素,但是對于沒有 id 或者 id 動態變化的情況下,建議使用 xpath 或者 css 來定位,
無法定位到元素時,可以通過 try...except 捕獲例外:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
try:
driver.find_element_by_id("123")
except Exception as e:
print(f"no such element -- {e}")
driver.quit()
如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以關注我一起討論,
給大家推薦一個軟體測驗技術交流群:1079636098 群友福利免費領取
【軟體測驗流程圖總結】
公眾號【程式員一凡】
加油吧,測驗人!路就在腳下,成功就在明天!
未來的你肯定會感謝現在拼命的自己!
愿你我相遇,皆有所獲! 歡迎關注微信公眾號:程式員一凡
1.免費領取一份216頁軟體測驗工程師面試寶典檔案資料,
2.軟體測驗學習路線以及相對應的視頻學習教程免費分享!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/248000.html
標籤:其他
上一篇:Nmap掃描原理與用法
