selenium 元素定位常用的方法
元素定位的方法有2个
driver.findElement(By.args) 返回值是WebElement //此方法是获取单一的页面元素
driver.findElements(By.args) 返回值是list<WebElement> //此方法是获取多个页面元素;例如:获取一组复选框,然后都打上√号
两种方法获取页面元素方法基本一样
- <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
1、通过id进行定位--By.id()
driver.findElement(By.id("kw")).click();
2、通过name进行定位--By.name()
driver.findElement(By.name("wd")).click();
3、通过clasName进行定位--By.className()
driver.findElement(By.className("s_ipt")).sendKeys("通过class属性进行定位");
4、通过标签名字进行定位--By.tagName()
driver.findElements(By.tagName("input"));
5、通过linktext(超链接)进行定位--By.linkText()
- <a href="https://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a>
driver.findElement(By.linkText("hao123")).click(); //此方法是根据超链接的所有文字进行定位
driver.findElement(By.partialLinkText("hao")).click(); //此方法是根据超链接的部分文字进行定位
6、通过css选择器进行定位--By.cssSelector()
driver.findElement(By.cssSelector("#kw")).sendKeys("通过css id选择器进行定位"); //通过id属性进行定位
driver.findElement(By.cssSelector(".s_ipt")).sendKeys("通过css class选择器进行定位"); //通过class 属性进行定位
driver.findElement(By.cssSelector("input")).sendKeys("通过标签名进行定位"); //通过标签名进行定位
driver.findElement(By.cssSelector("input")).sendKeys("通过标签名进行定位"); //通过标签名进行定位
driver.findElement(By.cssSelector("input[maxlength='250']")).sendKeys("通过标签属性值进行定位"); //通过标签属性值进行定位
7、通过xpath进行定位--By.xpath()
这个方法是非常强大的元素查找方式,使用这种方法几乎可以定位到页面上的任意元素。
优点:基本上是万能的
缺点:因为要遍历所愿元素的路径,执行效率可能比较慢
定位的方法有两种:
“/” 绝对路径,从页面的根元素开始
“//” 相对路径,从页面上的任何节点开始匹配
driver.findElement(By.xpath("//input[@id='kw']")).sendKeys("通过xpath进行定位"); //查找页面上id=kw的input输入框
driver.findElement(By.xpath("//form[1]/input")) //查找页面上第一个form元素内的直接子input元素(即只包括form元素的下一级input元素,使用绝对路径表示,单/号)
driver.findElement(By.xpath("//form[1]//input")) //查找页面上第一个form元素内的所有子input元素(只要在form元素内的input都算,不管还嵌套了多少个其他标签,使用相对路径表示,双//号)
xpath作为定位神器也可以进行模糊匹配
contains(@alt,'value'); //@alt 表示某个标签上的属性名,value表示属性的值
driver.findElement(By.xpath("//a[contains(@title,'我评论过的博文')]")).click(); //查找页面上包含 属性 title=‘我评论过的博文’ <a />标签,@后面的title 可以替换成元素的任意其他属性
[starts-with(@alt, ‘value’) // 以属性值=value开头的元素
driver.findElement(By.xpath(“//a[starts-with(@rel, ‘nofo’)])); //查找页面上 rel属性以nofo开头的a元素。其中@后面的rel可以替换成元素的任意其他属性。
总结:
页面上有id属性时,尽量用id
定位超级链接时可以考虑用 linktext
可以用xpath定位不好定位的元素,但是性能比较差
可以用tagName 定位同一组元素
selenium 元素定位常用的方法的更多相关文章
- python+selenium元素定位——8种方法
定位元素,selenium提供了8中元素定位方法: (1)find_element_by_id() :html规定,id在html中必须是唯一的,有点类似于身份证号 (2)find_element_b ...
- Selenium3 + Python3自动化测试系列二——selenium元素定位
一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...
- selenium元素定位之css选择器
在selenium元素定位时会用到css选择器选取元素,虽说xpath在定位元素时能解决大部分问题,但使用css选择器选取元素也是一种不错的选择. css相较与xpath选择元素优点如下: 表达式更加 ...
- selenium元素定位陷阱规避
为什么selenium可以在各个浏览器上运行?因为selenium在与各个浏览器驱动执行前,会先把脚本转化成webdriver, webdriver wire协议(一种json格式的协议),这样就与脚 ...
- 自动化测试基础篇--Selenium元素定位
摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...
- selenium元素定位方法
一.如何找到页面元素 Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id和name查找.下面介绍几种比较常用的方法. 1.1By ID 假设页面写成这样:i ...
- python之selenium元素定位方法
前提: 大家好,今天我们来学习一下selenium,今天主要讲解selenium定位元素的方法,希望对大家有所帮助! 内容: 一,selenium定位元素 selenium提供了8种方法: 1.id ...
- selenium元素定位大全
要做自动化,首先要了解页面结构,要了解页面结构,就要了解页面元素的定位方法 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合B ...
- selenium元素定位
在网页自动化测试中,我们要让程序自动模拟我们的点击.输入.悬浮.拖动等操作,完成我们的测试用例组. 输入.点击.打开这样的动词,已经包含在了selenium的方法中,可以直接调用(当然你也可以自己写) ...
随机推荐
- 3.介绍ASP.NET Core框架
介绍ASP.NET Core框架 在这篇文章中,我将要向你们简短介绍一下ASP.NET Core 框架.当今社会,当提到软件开发,每个人都是讨论着开源以及跨平台开发.总所周知,微软是以它的基于Wind ...
- API开放平台接口设计-------基于OAuth2.0协议方式
1,简介OAuth http://www.ruanyifeng.com/blog/2019/04/oauth_design.html OAuth 是什么? http://www.ruanyifeng. ...
- 大O 表示法
大O表示法 指出了算法有多快.例如,假设列表包含n个元素.简单查找需要检查每个元素,因此需要执行n次操作.使用大O表示法,这个运行时间为O(n).单位秒呢?没有——大O表示法指的并非以秒为单位的速度. ...
- centos7中提升用户权限
提升用户权限我看网上资源有两种方法,一种是修改/etc/sudoers/文件将新增的用户权限提升为和root一样的权限,这种方法不知道怎么回事我没用应用成功,这里我介绍第二种方法,第二种方法是更改/e ...
- [noip模拟]改造二叉树<LIS>
1.改造二叉树 [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随 ...
- 8.MSFvenom
Meterpreter 01 Meterpreter API调用 Meterpreter提供了多种APl调用,在编写自己的脚本时可以使用这些API来提供额外功能或定制功能. 关于ruby的更多信息,请 ...
- A. Array with Odd Sum Round #617(水题)
A. Array with Odd Sum time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Keil5新建STM32工程(库函数版本)
1.下载keil5教程参考:https://blog.csdn.net/qq_36854651/article/details/82632931 2.安装完keil5后,创建一个空的目录存放工程 3. ...
- 微信小程序wx:for隐藏遍历的最后一个元素
微信小程序开发时有时会需要从wx:for遍历的元素中选取最后一个来进行相关操作,以下方法以隐藏最后一个元素为例 index==list.length-1 通过获取列表的总长度减一来得到最后一个元素是最 ...
- JVM类加载过程详细分析
双亲委派加载模型 为什么需要双亲委派加载模型 主要是为了安全,避免用户恶意加载破坏JVM正常运行的字节码文件,比如说加载一个自己写的java.util.HashMap.class.这样就有可能造成包冲 ...