Web自动化元素定位之高阶用法
点击“搜狗测试”可关注我们!
版本迭代周期越来越短?需求越来越多?测试工作量越来越大?怎么保证质量?怎么保证上线周期?
随着互联网的快速发展,越来越多的测试人员遇到上述所说的问题。如何实现既提高测试效率和覆盖率,又节约测试成本,是每一个企业追求的目标。为了解决上述的问题,越来越多的公司开始加入自动化测试。现在小编和大家分享下web自动化中必须知道的一些高阶用法。
1.常用方法
1)通过class属性定位
driver.findElement(By.className("spread")).sendKeys("你好");
2)通过id属性定位
driver.findElement(By.id("username")).sendKeys("你好");
3)通过name属性定位
driver.findElement(By.name("username")).sendKeys("你好");
4)通过link属性定位
driver.findElement(By.linkText("商城")).click();
5)通过partialLink定位
driver.findElement(By.partialLinkText("商")).click();
//此方法主要在link文本特别长的时候使用
6)通过标签tagname定位
driver.findElement(By.tagName("a")).click();
7)通过css定位
driver.findElement(By.cssSelector("input[type="button"]")).click();
8)通过xapth定位
driver.findElement(By.xpath("/html/body/div[1]/input[2]")).click();
//通过xpath绝对路径的方式定位
driver.findElement(By.xpath("//input[@value="http://www.gunmi.cn/v/查询"]")).click();
//通过相对路径的方式定位
driver.findElement(By.xpath("//a[text()="百度一下"]")).click();
//相对路径方式,元素是可点击的链接文字
上面列举的是网页中常用的元素定位方法。那么遇到一些界面跳转,有下拉框,界面有多个frame,有非网页弹窗,常用方法又无法定位的情况该如何解决呢?下面就给大家介绍下如何解决这些定位不到的方法。
2.高阶方法
1)页面跳转,光标还留在原界面,新界面元素定位不到。
方式一:不关闭原窗口
String old = driver.getWindowHandle();
driver.getWindowHandle()://获取旧窗口句柄
for (String i : driver.getWindowHandles()) {
driver.getWindowHandles()://获取所有窗口的句柄
if (!i.equals(old)) {
driver.switchTo().window(i);
break; }//对句柄进行判断,如果是新窗口,则切换光标
}
方式二:关闭原窗口:推荐使用
String old = driver.getWindowHandle();
driver.getWindowHandle()://获取旧窗口句柄
for (String i : driver.getWindowHandles()) {
driver.getWindowHandles()://获取所有窗口的句柄
if (i.equals(old)) {
driver.close();
} else {
driver.switchTo().window(i);
break;
}
}
2)下拉框中的内容定位不到
Select s = new Select(driver.findElement(By.name("fruit")));//定位下拉框
s.selectByIndex(1);// 通过索引/下标获取下拉列表中的值
s.selectByValue("lizhi");// 通过value值获取下拉列表中的值
s.selectByVisibleText("猕猴桃");// 通过界面可见文本获取下拉列表中的值
3)同一个页面,具有多个frame,frame中的元素定位不到
以界面具有3个并列frame的情况进行举例:
步骤1:切换frame,进入左侧页面,再输入内容
driver.switchTo().frame("leftframe");
driver.findElement(By.id("left")).sendKeys("范冰冰");
步骤2:返回默认状态
driver.switchTo().defaultContent();
步骤3:切换frame进入中间页面,再输入内容
driver.switchTo().frame("middleframe");
driver.findElement(By.id("middle")).sendKeys("刘亦菲");
4)点击某个按钮后出现非网页弹窗无法定位
driver.findElement(By.id("btnConfirm")).click();//定位按钮并进行点击的操作
driver.switchTo().alert().accept();// 点击确定,accept:表示接受、同意的意思
driver.switchTo().alert().dismiss();// 点击取消,dismiss表示取消的意思
以上给大家介绍的是web页面中使用Java语音的元素的定位方法,Python语音的定位方式一样,只是语法不一样。大家如果有更好的方法或建议,欢迎留言。
- iPhone 8售价持续下跌!比iPhone 7还便宜
- 【会员风采】热烈祝贺“正实自动化”加入智能装备协会常务理事单
- 【航瑞物流自动化冠名】锂矿资源疯狂抢 动力电池冰火两重天
- 【壮凌自动化冠名】三井化学在中国的电解溶液设施完成产能扩充
- 惊奇元素铀:除了核燃料,还能做催化剂
- 为何“木”成了星巴克最大工坊的核心元素?Mexarts漾美这样说
- "魔鬼码头“——上海洋山四期自动化码头今日运营!
- 精准化、自动化、云端化、共享化的IVD+必将成为未来IVD发展的大
- 世界养龟人的盛会!品美食、享龟鳖文化、体验顺德元素,顺德区龟
- 《奇门遁甲》近万场点映上座率第一 奇幻搞笑元素引爆贺岁热潮