查詢 Web 元素
通過使用定位器和 By
類在 Selenium 中找到物品。為了使用 Selenium 建立一個強大的自動化專案,應該巧妙地使用 Web 元素的定位器。定位器應該具有**描述性,獨特性,並且不太可能發生變化,**因此你不會在測試中獲得誤報。優先使用:
- ID - 因為它是獨特的,你將獲得你想要的元素。
- 類名 - 它是描述性的,在給定的上下文中可以是唯一的。
- CSS ( 效能優於 xpath ) - 適用於更復雜的選擇器。
- XPATH - 無法使用 CSS( XPATH Axis ),例如
div::parent
。
其餘的定位器易於改變或渲染,並且優選地避免。
經驗法則: 如果你的程式碼無法找到特定元素,一個原因可能是你的程式碼沒有等待下載所有 DOM 元素。在搜尋所述元素之前,請考慮讓你的程式在短時間內等待(嘗試 3-5 秒,然後根據需要慢慢增加)。以下是 Python 中的一個示例,取自以下問題 :
from selenium import webdriver
import time
browser = webdriver.Firefox()
browser.get("https://app.website.com")
reports_element = browser.find_element_by_xpath("//button[contains(text(), 'Reports')]")
# Element not found! Try giving time for the browser to download all DOM elements:
time.sleep(10)
reports_element = browser.find_element_by_xpath("//button[contains(text(), 'Reports')]")
# This returns correct value!