Python脚本Selenium及页面Web元素定位详解
作者:胡桃_ 发布时间:2023-06-14 12:21:10
标签:Selenium,Web,元素定位
Selenium特点
开源,免费
多浏览器支持:firefox、chrome、IE
多平台支持:linux 、windows、MAC
多语言支持:java、python、ruby、php、C#、
对web页面有良好的支持
简单(API 简单)、灵活(用开发语言驱动)
支持分布式测试用例执行一、
八种定位方式
1、driver.find_element_by_xpath(value)
可以使用自带的copy xpath 进行定位
不推荐使用这种方法进行元素定位,后续开发修改代码路径发生变化就需要重新进行定位
// 使用xpath进行定位
from selenium import webdriver
driver = webdriver.Chrome() //打开谷歌
driver.get("http://www.baidu.com") //打开百度链接
//通过id定位到输入框的位置,send_keys('') 往输入框填写内容
driver.find_element_by_name("wd").send_keys("Selenium八大元素定位")
//通过id定位到按钮的位置并进行点击,click() 点击操作
driver.find_element_by_id("su").click()
//通过xpath定位获取元素位置
driver.find_element_by_xpath('//*[@id="2"]/h3/a').click()
利用元素属性进行xpath定位
// 利用元素属性进行xpath定位
from selenium import webdriver
driver = webdriver.Chrome() //打开谷歌
driver.get("http://www.baidu.com") //打开百度链接
//通过id定位到输入框的位置,send_keys('') 往输入框填写内容
driver.find_element_by_name("wd").send_keys("Selenium八大元素定位")
//通过id定位到按钮的位置并进行点击,click() 点击操作
driver.find_element_by_id("su").click()
//通过元素属性进行xpath定位 元素的值需要是唯一的
driver.find_element_by_xpath('//a[@href="https://www.baidu.com/link?url=whqbCegRZQsSTccYyuTdx3JumdN0qSFUFOo_xM_ESykWekftGjVFXAq * qjvQL0NG7iI1l6irIW_vdPN7h-K&wd=&eqid=d07979d2000631b10000000661443a3f" rel="external nofollow" ]').click()
2、driver.find_element_by_css_selector(value)
// 搜索百度使用f12定位到输入框的位置
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
from selenium import webdriver
driver = webdriver.Chrome() //打开谷歌
driver.get("http://www.baidu.com") //打开百度链接
//标签名及属性(含属性值)组合定位,方式有很多不一一举例
driver.find_element_by_css_selector('input[name="wd"]').send_keys("Selenium八大元素定位")
3、driver.find_element_by_id(value)
// 搜索百度使用f12定位到按钮的位置
<input type="submit" id="su" value="百度一下" class="bg s_btn">
// 使用id 定位到输入框的位置
from selenium import webdriver
driver = webdriver.Chrome() //打开谷歌
driver.get("http://www.baidu.com") //打开百度链接
//通过id定位到按钮的位置并进行点击,click() 点击操作
driver.find_element_by_id("su").click()
4、driver.find_element_by_name(value)
// 搜索百度使用f12定位到输入框的位置
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
// 使用name 定位到输入框的位置
from selenium import webdriver
driver = webdriver.Chrome() //打开谷歌
driver.get("http://www.baidu.com") //打开百度链接
//通过id定位到输入框的位置,send_keys('') 往输入框填写内容
driver.find_element_by_name("wd").send_keys("Selenium八大元素定位")
5、driver.find_element_by_class_name(value)
// 搜索百度使用f12定位到输入框的位置
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
// 使用name 定位到输入框的位置
from selenium import webdriver
driver = webdriver.Chrome() //打开谷歌
driver.get("http://www.baidu.com") //打开百度链接
driver.find_element_by_class_name("s_ipt").send_keys("Selenium八大元素定位")
6、driver.find_element_by_tag_name(value)
// 使用标签名进行定位
from selenium import webdriver
driver = webdriver.Chrome() //打开谷歌
driver.get("http://www.baidu.com") //打开百度链接
driver.find_element_by_tag_name("input")//通过标签名去定位,不推荐重复率很高
7、driver.find_element_by_link_text(value)
// 搜索百度使用f12定位到按钮的位置
<a href="http://news.baidu.com" rel="external nofollow" rel="external nofollow" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>
//此定位方式主要是对超链接进行定位,填写的内容是完整的超链接文字
from selenium import webdriver
driver = webdriver.Chrome() //打开谷歌
driver.get("http://www.baidu.com") //打开百度链接
//此定位方式主要是对超链接进行定位,也就是html中的<a>标签,括号中填写的值是完整的超链接文字
driver.find_element_by_link_text("新闻").click()
8、driver.find_element_by_partial_link_text(value)
// 搜索百度使用f12定位到按钮的位置
<a href="http://news.baidu.com" rel="external nofollow" rel="external nofollow" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>
//此定位方式主要是对超链接进行定位,填写的内容是部分的超链接文字
from selenium import webdriver
driver = webdriver.Chrome() //打开谷歌
driver.get("http://www.baidu.com") //打开百度链接
//此定位方式主要是对超链接进行定位,也就是html中的<a>标签,括号中填写的值是部分的超链接文字
driver.find_element_by_partial_link_text("新").click()
来源:https://blog.csdn.net/weixin_45999852/article/details/120831902
0
投稿
猜你喜欢
- 前言:本篇文章对如何使用golang连接并操作postgre数据库进行了简要说明。文中使用到的主要工具:DBeaver21、VSCode,G
- 本文实例讲述了php以post形式发送xml的方法。分享给大家供大家参考。具体方法如下:方法一,使用curl:$xml_data = <
- Dmitry这篇设计评论表单很有启发意义,尤其提到关键的评论内容、评论者信息录入顺序问题。好比我们在日常沟通时,对信息的反馈都是第一诉求,写
- 本文实例讲述了PHP变量作用域(全局变量&局部变量)&global&static关键字用法。分享给大家供大家参考,具
- Union 与 Union ALL 的作用都是合并 SELECT 的查询结果集,那么它们有什么不同呢? Union 将查询到的结果集合并后进
- 众所周知,透明的PNG图片在IE6中是不透明的。为了在IE6中显示透明的PNG图片,找了一下方法,在网页中嵌入JS语句,可是执行效果并不尽如
- 译者 | 豌豆花下猫声明 :本文获得原作者授权翻译,转载请保留原文出处,请勿用于商业或非法用途。有许许多多文章写了 Python 中的许多很
- 给明文密码加密的流程:import base64pwd_after_encrypt = base64.b64encode(b'thi
- isdecimal()方法检查字符串是否仅由十进制字符组成。此方法只存在于unicode对象。注意:要定义一个字符串为Unico
- show profile是由Jeremy Cole捐献给MySQL社区版本的。默认的是关闭的,但是会话级别可以开启这个功能。开启它可以让My
- 随着MySQL数据库存储的数据逐渐变大,已经将原来的存储数据的空间占满了,导致mysql已经链接不上了。因此,必须要给存放的数据换个地方了。
- VueUse官方链接一、什么是VueUseVueUse不是Vue.use,它是为Vue 2和3服务的一套Vue Composition AP
- 建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成。只有当各个部分都完成了,这个对象才完整。建造者模式
- 因为在做一个项目需要筛选掉一部分产品列表中的产品,使其在列表显示时排在最后,但是所有产品都要按照更新时间排序。研究了一下系统的数据库结构后,
- Pytorch中retain_graph的坑在查看SRGAN源码时有如下损失函数,其中设置了retain_graph=True,其作用就是在
- 1.在查询结果中显示列名: a.用as关键字:select name as '姓名' from students order
- 前言本文使用Mysql8.0的特新实现递归查询,文中给出了详细的实例代码,下面话不多说了,来一起看看详细的介绍吧Mysql8.0递归查询用法
- 本文实例讲述了Go语言中错误处理的方法。分享给大家供大家参考。具体分析如下:错误是可以用字符串描述自己的任何东西。 主要思路是由预定义的内建
- Go 处理 json数据主要就是使用 json 包下的 Marshal 和 UnMarshal 两个函数。定义结构体 Usertype Us
- 题目:请求出任意区间[a,b]的所有素数,简单考虑实用性这道题看起来应该很easy是吧,但任意区间(这个问题有没get 到)Afanty的分