java8种定位_selenium的8种定位方式(java举例)

本文详细介绍了使用Selenium WebDriver在Java中进行元素定位的8种方法,包括By.name(), By.id(), By.className(), By.tagName(), By.linkText(), By.partialLinkText(), By.xpath(), 和 By.cssSelector()。通过实例代码展示了每种定位方式的用法,帮助开发者更好地理解和应用Selenium进行网页元素的精准定位。" 127418267,14246565,Java毕业设计:废旧物品回收管理系统(MyBatis+Layui),"['Java开发', 'MyBatis框架', '前端开发', '数据库设计', '系统集成']
摘要由CSDN通过智能技术生成

已经存在webdriver实例化的对象

WebDriver driver=new FirefoxDriver();

1. By.name()

通过元素的name属性查找,但是如果元素较多的话,定位困难,尤其存在多个相同的name属性的时候

dr.findElement(By.name("name")).clear();

2.By.id()

通过元素的id属性命名,一般来说id比name精确,一般来说一个页面内id值都不会同名

dr.findElement(By.id("password")).sendKeys(pwd);

3.By.className()

通过元素的类名查找,一般页面中,多个元素都可能属于同一个class类,也有一个元素属于多个class类的情况,使用不是很多

4.By.tagName()

通过元素的标签名查找,一般用的少,一般一个页面有多个标签、标签,一般会查找个多个元素,但是可以通过list 去接收,然后循环foreach循环找到需要的元素,如下

public voidce() {

dr=newFirefoxDriver();

dr.get("http://crm.cloud.5kcrm.com/");

WebElement tg1= null;

List tagnames= dr.findElements(By.tagName("input"));for(WebElement tg:tagnames){if(tg.getAttribute("name").equals("password")){

tg1=tg;break;

}

}

System.out.println(tg1.getTagName().toString());

}

5. By.linkText()

通过标签链接的内容进行查找

如html中

组织架构

那么这样写

dr.findElement(By.linkText("组织架构")).click();

6. By.partialLinkText()

是linktest进一部的简化使用,标签内容的局部匹配

如html中

组织架构

那么这样写

dr.findElement(By.partiallinkText("组织")).click();

7. By.xpath()

强大的匹配工具,主要通过位置来匹配,有相对位置和绝对位置,如下:

dr.findElement(By.xpath(".//*[@id='popOverBox']/input[2]")).click();//相对位置

dr.findElement(By.xpath("html/body/div[9]/div[2]/form/div[1]/div/input")).sendKeys("测试部门");//绝对位置

(1)匹配属性

dr.findElement(By.xpath(“//a[contains(@href, 'ces')]”));//href中包含'ces'的a的标签

(2)匹配字符

dr.findElement(By.xpath("//a[contains(text(),'办')]"));//匹配a标签中包含“办”的文字如办公室

(3)匹配兄弟元素、父元素等等

可以参照w3school中的轴的使用

8. By.cssSelector()

通过css的选择器进行元素的查找

html中的css选择器使用方式如下

ID选择器:

#idName{}样式唯一;

类选择器:

.className{}样式共用;

标签选择器

html自带的标签;

优先级:ID>类>标签选择器

.name a{}

name类下的a标签进行样式修改

a,p{}

a、p两种标签样式同时修改

但是cssSelector中的递进关系是用【>】进行的,css选择器择是用空格进行的递进关系

dr.findElement(By.cssSelector(".controls>textarea[name='description']")).sendKeys("测试测试");

//这里.controls表示class名为controls;textarea表示标签名,name表示textarea中的属性名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值