一、查看页面元素

示例:使用 Chrome 浏览器打开百度首页,按 F12 进入开发者工具或者右键单击“检查”,点击方框中的箭头,鼠标移动到需要检查的元素就可以查看到元素相关的代码了。

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

 

对于一些元素如设置->高级搜索无法定位时,可以在鼠标悬浮在设置上调出高级搜索后,按 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("https://www.baidu.com")

# 找到百度的搜索框并输入 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("https://www.baidu.com")

try:

driver.find_element_by_id("123")

except Exception as e:

print(f"no such element -- {e}")

driver.quit()

 


如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以关注我一起讨论。

给大家推荐一个软件测试技术交流群:1079636098 群友福利免费领取

【软件测试流程图总结】

公众号【程序员一凡】

加油吧,测试人!路就在脚下,成功就在明天!

未来的你肯定会感谢现在拼命的自己!

愿你我相遇,皆有所获! 欢迎关注微信公众号:程序员一凡

1.免费领取一份216页软件测试工程师面试宝典文档资料。

2.软件测试学习路线以及相对应的视频学习教程免费分享!

内容来源于网络如有侵权请私信删除