当我们想让 Selenium 自动地操作浏览器时,就必须告诉 Selenium 如何去定位某个元素或一组元素,每个元素都有着不同的标签名和属性值,Selenium 提供了以下8种定位元素的方式,每种方式对应了2个方法:
find_element_by_( ),是用来定位单个元素的,find_elements_by_( ),是用来定位多个元素的。
通过 id 定位
通过 name 定位
通过 class 定位
通过 tag 定位
通过 link 定位
通过 partial link 定位
通过 xpath 定位
通过 css 选择器定位
下面以百度首页为例进行举例说明:
1.通过 id 定位find_element_by_id(id)
find_elements_by_id(id)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位id为“kw”的元素 input_text = driver.find_element_by_id("kw") input_text.send_keys("selenium") driver.quit()2.通过通过 name 定位
find_element_by_name(name)
find_elements_by_name(name)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位name为“wd”的元素 input_text = driver.find_element_by_name("wd") input_text.send_keys("selenium") driver.quit()3.通过 class 定位
find_element_by_class_name(name)
find_elements_by_class_name(name)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位class名称为“s_ipt”的元素 input_text = driver.find_element_by_class_name("s_ipt") input_text.send_keys("selenium") driver.quit()4.通过 tag 定位
find_element_by_tag_name(name)
find_elements_by_tag_name(name)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位标签为的元素 input_text = driver.find_elements_by_tag_name("input") print(len(input_text)) driver.quit()5.通过 link 定位
find_element_by_link_text(link_text)
find_elements_by_link_text(link_text)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位链接文本完全匹配“我新闻”的元素 news = driver.find_element_by_link_text("新闻") news.click() driver.quit()6.通过 partial link 定位
find_element_by_partial_link_text(link_text)
find_elements_by_partial_link_text(link_text)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # 定位链接文本部分匹配“新”的元素 news = driver.find_element_by_partial_link_text("新") news.click() driver.quit()7.通过 xpath 定位
find_element_by_xpath(xpath)
find_elements_by_xpath(xpath)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # xpath定位,相对路径与属性结合定位搜索框 news = driver.find_element_by_xpath("//input[@id="kw"]") news.click() driver.quit()8.通过 css 选择器定位
find_element_by_css_selector(css_selector)
find_elements_by_css_selector(css_selector)
# _*_ coding:utf-8 _*_ from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com/") # css选择器,id定位密码输入框 news = driver.find_element_by_css_selector("#kw") news.click() driver.quit()
这里只是简单介绍了8种元素定位方式的使用,比较简单易用的是通过id、name、class定位,我个人比较喜欢的是用xpath定位,当然,最灵活也是最强大的定位方式就是css,它也是比较难掌握的一种方式。关于xpath和css定位方式的详细介绍,可以参考
selenium 元素定位。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/43257.html
摘要:注意如果上述脚本无法正常启动浏览器,需要先检查与浏览器的版本是否一致然后再检查浏览器对应的文件是否放在的安装目录下,如系统的默认安装路径,,如果没有请将该文件放在此目录下,然后再次运行脚本。 第一个自动化测试脚本 脚本如下所示: # _*_ coding:utf-8 _*_ from selenium import webdriver from selenium.webdriver....
摘要:前面一节主要介绍了类,这一节则主要介绍类。提供了一些功能属性和方法来实现与网页元素的交互,这些元素主要包括文本框文本域按钮单选框多选框表格等等。 前面一节主要介绍了 WebDriver 类,这一节则主要介绍 WebElement 类。WebElement 提供了一些功能、属性和方法来实现与网页元素的交互,这些元素主要包括文本框、文本域、按钮、单选框、多选框、表格等等。 WebEleme...
摘要:和是中两个非常重要的类,使用它们提供的方法可以实现与浏览器和页面元素的各种交互操作。该方法在每个只需要调用一次等待时间单位为秒设置一个页面完全加载完成的超时等待时间等待时间单位为秒设置脚本执行的超时时间,应该在抛出错误之前等待时间单位为秒 WebDriver 和 WebElement 是 Selenium 中两个非常重要的类,使用它们提供的方法可以实现与浏览器和页面元素的各种交互操作。...
摘要:华文宋体验证搜索结果页面的标题是否是自动化测试百度搜索。华文宋体移除了华文宋体版本的华文宋体也就是说,华文宋体不再得到官方的支持。一、自动化测试概念1、概念java:TestNgpython:unittest pytest2、自动化测试可行性测试目的明确,需求不会频繁的变更对于项目的自动化测试,要看项目的具体情况一个产品需要在多个环境下部署对于web GUI测试,需要测试用例在不同的浏览器上...
摘要:最近一直在学习自动化测试相关的内容,于是决定将整个学习过程记录在这里,一方面可以作为笔记方便自己以后随时随地地查看,另一方面也希望分享出来能够和大家一起学习讨论进步。 最近一直在学习UI自动化测试相关的内容,于是决定将整个学习过程记录在这里,一方面可以作为笔记方便自己以后随时随地地查看,另一方面也希望分享出来能够和大家一起学习讨论进步。 需要准备的环境 Python 2 Seleni...
阅读 2962·2023-04-26 00:23
阅读 3376·2021-09-13 10:28
阅读 2137·2021-08-31 14:18
阅读 2866·2019-08-30 15:54
阅读 1872·2019-08-30 15:43
阅读 1243·2019-08-29 16:56
阅读 2784·2019-08-29 14:16
阅读 2030·2019-08-28 17:51