龙空技术网

元素定位方法吃得透,Selenium才能学得好

说说软件测试那些事儿 91

前言:

当前咱们对“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种方法