前言:
当前咱们对“webdriver定位元素8种方法”大体比较注意,你们都需要剖析一些“webdriver定位元素8种方法”的相关知识。那么小编在网上汇集了一些有关“webdriver定位元素8种方法””的相关文章,希望我们能喜欢,看官们一起来学习一下吧!一、查看页面元素
示例:使用 Chrome 浏览器打开百度首页,按 F12 进入开发者工具或者右键单击“检查”,点击方框中的箭头,鼠标移动到需要检查的元素就可以查看到元素相关的代码了。
对于一些元素如设置->高级搜索无法定位时,可以在鼠标悬浮在设置上调出高级搜索后,按 ctrl + shift + c 来定位。
二、元素定位
WebDriver 提供了八种元素定位方法:id、name、class name、 tag name、 link text、 partial link text、 xpath、 css selector。
2.1 find_element_by_id()、find_elements_by_id()
通过元素的 id 属性定位,find_element_by_id() 定位单个元素,如果找不到元素将返回 NoSuchElementException 异常;find_elements_by_id() 定位一组元素,返回一个列表。
# 例:定位百度首页搜索输入框,send_keys 用于输入文本
#"kw" name="wd"class="s_ipt" value="" maxlength="255" autocomplete="off">
driver.find_element_by_id("kw").send_keys("test")
2.2 find_element_by_class_name()、find_elements_by_class_name()
通过元素的 class 属性定位
# 例:定位百度首页搜索输入框,并输入 test
# "kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
driver.find_element_by_class_name("s_ipt").send_keys("test")
2.3 find_element_by_name()、find_elements_by_name()
# 例:定位百度首页搜索输入框,并输入 test
# "kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
driver.find_element_by_name("wd").send_keys("test")
2.4 find_element_by_tag_name()、find_elements_by_tag_name()
# 找到百度首页所有的 input 标签元素
eles = driver.find_elements_by_tag_name("input")
2.5 find_element_by_link_text()、find_elements_by_link_text()
通过链接文本来定位元素,文本完全匹配时才可定位到
# 定位百度到新闻并点击
# 新闻
driver.find_element_by_link_text("新闻").click()
2.6 find_element_by_partial_link_text()、find_elements_by_partial_link_text()
同 find_element_by_link_text(), 通过链接文本来定位元素,只要部分匹配到即可
# 定位百度到新闻并点击
# 新闻
driver.find_element_by_partial_link_text("新").click()
2.7 find_element_by_css_selector()、find_elements_by_css_selector()
# 例:定位百度首页搜索输入框,并输入 test
# "kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
driver.find_element_by_css_selector('#kw').send_keys("test")
2.8 find_element_by_xpath()、find_elements_by_xpath()
# 例:定位百度首页搜索输入框,并输入 test
# "kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("test")
注:也可以通过 find_element 和 find_elements 来获取元素,需要配合 By 类一起使用,如:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get(";)
# 找到百度的搜索框并输入 test
driver.find_element(By.ID, "kw").send_keys("test")
理想状态下可以通过 id、class来定位元素,但是对于没有 id 或者 id 动态变化的情况下,建议使用 xpath 或者 css 来定位。
无法定位到元素时,可以通过 try...except 捕获异常:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(";)
try:
driver.find_element_by_id("123")
except Exception as e:
print(f"no such element -- {e}")
driver.quit()
标签: #webdriver定位元素8种方法