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

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

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

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

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

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

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

1.绝对路径定位

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

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

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

driver.findElement(By.Xpath("//input[@id='abc']"),//表示当前页面的某个目录下,input表示定位元素的标签名,[@id='abc']表示这个元素的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",我们可以写成

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

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

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

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

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

2.<div class="tag">的父级是<div class="tag-box d-flex flex-row" id="categorieBox">

我们可以这么写 driver.findElement(By.CssSelector(".tag-box d-flexflex-row .tag .name"))

.tag-box d-flexflex-row .tag .name : .class名 然后空格  .class名 然后空格 . class名

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

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

猜你喜欢

转载自blog.csdn.net/wanglong12341/article/details/81782373
今日推荐