查詢 Web 元素

通過使用定位器By 類在 Selenium 中找到物品。為了使用 Selenium 建立一個強大的自動化專案,應該巧妙地使用 Web 元素的定位器。定位器應該具有**描述性,獨特性,並且不太可能發生變化,**因此你不會在測試中獲得誤報。優先使用:

  1. ID - 因為它是獨特的,你將獲得你想要的元素。
  2. 類名 - 它是描述性的,在給定的上下文中可以是唯一的。
  3. CSS效能優於 xpath ) - 適用於更復雜的選擇器。
  4. 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!