pythonselenium怎么设置元素(Python2 Selenium元素定位的实现8种)
pythonselenium怎么设置元素
Python2 Selenium元素定位的实现8种
当我们想让 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>的元素 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() |
通用的终极定位语法
上面的所有元素定位 find_element_by_xxx和find_elements_by_xxx调用的结果,实际上都是在调用以下两种方法,我们也可以直接调用一下两种方法即可。
find_element(self, by=By.ID, value=None):
find_elements(self, by=By.ID, value=None):
|
class By( object ): """ Set of supported locator strategies. """ ID = "id" XPATH = "xpath" LINK_TEXT = "link text" PARTIAL_LINK_TEXT = "partial link text" NAME = "name" TAG_NAME = "tag name" CLASS_NAME = "class name" CSS_SELECTOR = "css selector" |
例如:
|
from selenium.webdriver.common.by import By # 根据id,定位id为“world”的元素 world = driver.find_element(By. ID , "world" ) print (world.text) # xpath定位,相对路径与属性结合 定位密码输入框 password = driver.find_element(By.XPATH, "//input[@name='password']" ) print (password.get_attribute( "value" )) # css选择器,标签+属性 定位用户名输入框 username = driver.find_element(By.CSS_SELECTOR, "input[name='username']" ) print (username.get_attribute( "value" )) |
这里只是简单介绍了8种元素定位方式的使用,比较简单易用的是通过id、name、class定位,我个人比较喜欢的是用xpath定位,当然,最灵活也是最强大的定位方式就是css,它也是比较难掌握的一种方式。关于xpath和css定位方式的详细介绍,可以
参考
selenium 元素定位。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://segmentfault.com/a/1190000018260866
- python时间类的实现(Python日期时间Time模块实例详解)
- python如何编写判断正负数程序(Python实现判断一个整数是否为回文数算法示例)
- flask项目微信小程序(Python Flask 搭建微信小程序后台详解)
- python创建字典的代码(Python创建字典的八种方式)
- python将对象转换成json(python对象与json相互转换的方法)
- python程序锁教程(在python里协程使用同步锁Lock的实例)
- python队列快速排序(python按照多个条件排序的方法)
- python3第三方库手册(使用python3构建文件传输的方法)
- python opencv 标记目标(使用Python的OpenCV模块识别滑动验证码的缺口推荐)
- 能自动点赞的小程序(python实现QQ空间自动点赞功能)
- python爬取在线评论(Python爬虫实现爬取百度百科词条功能实例)
- python画图教程(详解用Python练习画个美队盾牌)
- python中导入模块的命令(Python3 导入上级目录中的模块实例)
- python中读取文件怎么操作(Python实现的读取文件内容并写入其他文件操作示例)
- python编写小程序实现密码验证(python实现扫描ip地址的小程序)
- python能操作微信定时发消息(python给微信好友定时推送消息的示例)
- 入秋后的第二场苹果发布会来了 全新M1系列芯片登场(入秋后的第二场苹果发布会来了)
- 苹果正式发布自研芯片M1 5nm 32核心 彻底放弃Intel(苹果正式发布自研芯片M1)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
- X86处理器的梦魇 苹果M1自研芯片到底有多强(苹果M1自研芯片到底有多强)
- 泰剧《爱欲之神》Boom kitkong和Great合体杂志(泰剧爱欲之神Boomkitkong和Great合体杂志)
- 素人恋爱综艺火药味十足 男生为赢得芳心集体扯头花,真是出好戏(素人恋爱综艺火药味十足)
热门推荐
- 查sqlserver锁表语句(Sql Server如何查看被锁的表及解锁的方法)
- mysql日期用法(MySQL DATE_ADD和ADDDATE函数实现向日期添加指定时间间隔)
- docker远程部署(Docker内网穿透frp部署实现过程解析)
- 无法打开sql server的连接(由于系统错误 126 SQL Server,指定驱动程序无法加载)
- iframe解决跨域问题(跨域修改iframe页面内容详解)
- dockerip访问限制(docker win ping 不通容器 避坑指南)
- 阿里云的自带mysql怎么开启(阿里云云服务器mysql密码找回的方法)
- SQL中Between查询日期的问题
- php 支付系统(php 实现银联商务H5支付的示例代码)
- sqoop导出参数(sqoop export导出 map100% reduce0% 卡住的多种原因及解决)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9