Selenium 提供了多种定位元素的方法。以下是八大常用的定位策略,每种方法的特点和示例代码
# 通过元素的ID定位
element = driver.find_element_by_id("elementId") # 通过ID查找元素
# 通过元素的Name属性定位
element = driver.find_element_by_name("elementName") # 通过Name属性查找元素
# 通过元素的Class Name定位
element = driver.find_element_by_class_name("elementClassName") # 通过Class Name查找元素
# 通过元素的Tag Name定位
element = driver.find_element_by_tag_name("tagName") # 通过Tag Name查找元素
# 通过完整的链接文本定位
element = driver.find_element_by_link_text("Full Link Text") # 通过完整链接文本查找元素
# 通过部分链接文本定位
element = driver.find_element_by_partial_link_text("Partial Link Text") # 通过部分链接文本查找元素
# 通过CSS选择器定位
element = driver.find_element_by_css_selector(".className") # 通过CSS选择器查找元素
# 通过XPath定位
element = driver.find_element_by_xpath("//tagName[@attribute='value']") # 通过XPath表达式查找元素
# 使用CSS选择器通过类名定位元素
element = driver.find_element_by_css_selector(".className") # 查找类名为className的元素
# 使用CSS选择器通过ID定位元素
element = driver.find_element_by_css_selector("#elementId") # 查找ID为elementId的元素
# 使用CSS选择器通过属性定位元素
element = driver.find_element_by_css_selector("[name='elementName']") # 查找name属性为elementName的元素
# 使用XPath选择器通过标签和属性定位
element = driver.find_element_by_xpath("//input[@name='username']") # 查找name属性为username的input元素
# 使用XPath选择器通过层级路径定位
element = driver.find_element_by_xpath("/html/body/div/form/input") # 通过层级路径查找input元素
# 使用XPath函数通过文本内容定位
element = driver.find_element_by_xpath("//button[text()='Submit']") # 查找文本为Submit的按钮
# 使用XPath函数通过部分文本内容定位
element = driver.find_element_by_xpath("//a[contains(text(), 'Learn')]") # 查找包含Learn文本的链接
# 使用XPath函数通过属性值进行匹配
element = driver.find_element_by_xpath("//input[starts-with(@name, 'user')]") # 查找name属性以user开头的input元素
# 使用XPath相对定位查找子元素
element = driver.find_element_by_xpath("//div[@class='container']//button") # 查找class为container的div内的button
# 使用XPath相对定位查找前一个或后一个兄弟元素
element = driver.find_element_by_xpath("//label[text()='Username']/following-sibling::input") # 查找紧随Username标签后的input元素
// 测试CSS选择器
document.querySelector(".className"); // 查找class为className的元素
// 测试XPath选择器
document.evaluate("//button[text()='Submit']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; // 查找文本为Submit的按钮