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