查找 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!