欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Selenium Java Web 自动化实践总结(三)Selenium元素定位

程序员文章站 2022-07-14 11:19:26
...

关于元素定位是做自动化测试的基础,很多文章都写了id,name,classname这几种定位方式,很早以前开发们写可能会写上。现在基本就不写了。老牌的网站还有的,like 百度。

Selenium Java Web 自动化实践总结(三)Selenium元素定位

咱们直说2种,会了这两种基本就没问题了。

1.xpath定位,xpath 是啥?xpath是xml文档中查找信息的语言。呃,需要的在这个地址了解下。

http://www.w3school.com.cn/xpath/index.asp

简单来说xpath 直接浏览器打开 F12 ,选择元素,右键复制xpath 即可

Selenium Java Web 自动化实践总结(三)Selenium元素定位Selenium Java Web 自动化实践总结(三)Selenium元素定位

也可以手动写。主要方法如下

1.绝对路径定位

//查找 HTML下body下第一个div元素下的第三个div元素下的input输入框。
driver.findElement(By.Xpath("/html/boay/div[1]/div[3]/input");

2.利用元素属性进行定位

driver.findElement(By.Xpath("//标签[@属性==‘属性值’]")

//表示当前页面的某个目录下,input表示定位元素的标签名,[@id='abc']表示这个元素的id是abc。
driver.findElement(By.Xpath("//input[@id='abc']");

3.利用元素text进行定位

driver.findElement(By.Xpath("//*[contains(text(),'百度一下')]")  

这些就差不多够用了。想详细研究的话,最好学习下 xpath语言

第二种CSS定位 css定位基于css selector 选择器定位的一种方式。具体语法详见教程,

http://www.w3school.com.cn/cssref/css_selectors.asp

1.根据class定位 例如元素的class="clss",我们可以写成

//样写可以定位到所有class名为clss 的元素。定位可能不是唯一的。
driver.findElement(By.CssSelector(".clss")) ;

2.根据元素的属性定位 例如元素的a<name="name1">,我们可以写成

//这样写可以定位到所有name名为name1的 a标签元素。定位可能不是唯一的。
driver.findElement(By.CssSelector("a[name=name1]")) ;

3.多级定位:例如我们要定位span 标签

Selenium Java Web 自动化实践总结(三)Selenium元素定位

1.span标签的父级是<div class="tag">

2.<div class="tag">的父级是<div class="tag-box d-flex flex-row" id="categorieBox">我们可以这么写

//.tag-box d-flexflex-row .tag .name : .class名 然后空格  .class名 然后空格 . class名 
driver.findElement(By.CssSelector(".tag-box d-flexflex-row .tag .name"));

还有很多css选择器方法,需要具体研究下css 选择器,加油。

如果您觉得文章对您有帮助,那就打赏下作者吧。如果您有问题需要咨询,或者交流心得。请添加qq群:829468634。

Selenium Java Web 自动化实践总结(三)Selenium元素定位