元素定位的方法有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 元素定位常用的方法的更多相关文章

  1. python+selenium元素定位——8种方法

    定位元素,selenium提供了8中元素定位方法: (1)find_element_by_id() :html规定,id在html中必须是唯一的,有点类似于身份证号 (2)find_element_b ...

  2. Selenium3 + Python3自动化测试系列二——selenium元素定位

    一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...

  3. selenium元素定位之css选择器

    在selenium元素定位时会用到css选择器选取元素,虽说xpath在定位元素时能解决大部分问题,但使用css选择器选取元素也是一种不错的选择. css相较与xpath选择元素优点如下: 表达式更加 ...

  4. selenium元素定位陷阱规避

    为什么selenium可以在各个浏览器上运行?因为selenium在与各个浏览器驱动执行前,会先把脚本转化成webdriver, webdriver wire协议(一种json格式的协议),这样就与脚 ...

  5. 自动化测试基础篇--Selenium元素定位

    摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...

  6. selenium元素定位方法

    一.如何找到页面元素 Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id和name查找.下面介绍几种比较常用的方法. 1.1By ID 假设页面写成这样:i ...

  7. python之selenium元素定位方法

    前提: 大家好,今天我们来学习一下selenium,今天主要讲解selenium定位元素的方法,希望对大家有所帮助! 内容: 一,selenium定位元素 selenium提供了8种方法: 1.id ...

  8. selenium元素定位大全

    要做自动化,首先要了解页面结构,要了解页面结构,就要了解页面元素的定位方法 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合B ...

  9. selenium元素定位

    在网页自动化测试中,我们要让程序自动模拟我们的点击.输入.悬浮.拖动等操作,完成我们的测试用例组. 输入.点击.打开这样的动词,已经包含在了selenium的方法中,可以直接调用(当然你也可以自己写) ...

随机推荐

  1. 玩转控件:对Dev中GridControl控件的封装和扩展

    又是一年清明节至,细雨绵绵犹如泪光,树叶随风摆动.... 转眼间,一年又过去了三分之一,疫情的严峻让不少企业就跟清明时节的树叶一样,摇摇欲坠.裁员的裁员,降薪的降薪,996的996~~说起来都是泪,以 ...

  2. CSS 常用属性之 阴影

    text-shadow 是一个给文字添加阴影的属性 text-shadow: X偏移量,Y偏移量,模糊值,颜色  可以同时设置多个文本阴影,需要用逗号隔开 如果是需要兼容低版本的浏览器 -webkit ...

  3. 模块 pillow图像处理

    Pillow概况 PIL是Python的一种图像处理工具. PIL支持大部分的图像格式,高效并强大. 核心库设计用来高速访问基于基于像素的数据存储,给这个通用的图像处理工具提供了坚实的基础. 一.读. ...

  4. 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 ...

  5. CentOS-7.6 下搭建 NIS 服务器

    ##服务端配置: ####Server: 192.168.0.178(CentOS 7.6) # systemctl stop firewalld # systemctl disable firewa ...

  6. Java 中为什么不能创建泛型数组?

    之前只是知道在 Java 中不能创建泛型数组,今天翻看 <Effective Java>其中对这个部分有讲解,记录一下. 现在我们假设在 Java 中可以创建泛型数组,看看可能会发生什么情 ...

  7. 命令行工具nslookup查域名DNS服务器

    在使用的操作系统里进入终端, 1.输入 nslookup 回车 2.输入 set type=ns 回车 3.输入域名(不带WWW的),如:baidu.com 回车 操作过程如下, > set t ...

  8. python 函数简介

    一.为什么要有函数? 不加区分地将所有功能的代码垒到一起,问题是: 代码的可读性差. 代码冗余 代码可扩展性差 如何解决? 函数即工具,事先准备工具的过程是定义函数,拿来就用指的是函数调用. 什么是函 ...

  9. 【视频+图文】Java经典基础练习题(六):猴子吃桃子问题

    目录 一.具体题目 二.视频讲解 三.思路分析(逆向思维) 四.代码+结果 代码: 结果: 五.彩蛋 一.具体题目 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个  第二天 早上又将剩下 ...

  10. 【Selenium02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...