Web端自动化元素定位方法

摘要:
随着互联网的快速发展,版本迭代周期越来越短?如何确保在线周期?。如何在节约测试成本的同时提高测试效率和覆盖率是每个企业的目标。为了解决上述问题,越来越多的公司开始加入自动化测试。那么,如果有一些界面跳转、下拉框、多个框架、非web弹出窗口,并且常用方法无法找到它们,该怎么办?

Web端自动化元素定位方法

随着互联网的快速发展,版本迭代周期越来越短?需求越来越多?测试工作量越来越大?怎么保证质量?怎么保证上线周期?。如何实现既提高测试效率和覆盖率,又节约测试成本,是每一个企业追求的目标。为了解决上面的问题,越来越多的公司开始加入自动化测试。以下是一些常用的定位方法介绍

一、常用方法

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();

6)通过标签tabname定位

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='查询']")).click();

//通过相对路径的方式定位

driver.findElement(By.xpath("//a[text()='百度一下']")).click();

//相对路径方式,元素是可点击的链接文字

上面列举的是同一个网页中常用的元素定位方法。那么遇到一些界面跳转,有下拉框,界面有多个frame,非网页弹窗,常用方法无法定位的情况怎么办呢?下面就给大家介绍下如何解决这些定位不到的方法。

二、高阶方法

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语言的定位方式一样,只是语法不一样。

免责声明:文章转载自《Web端自动化元素定位方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]windows下设置socket的connect超时c库函数之 bcmp下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Windows API 教程(七) hook 钩子监听

茵蒂克丝 如何创建一个窗口 手动创建窗口的流程 实际代码 安装钩子 (Install hook) 钩子简介 SetWindowsHookEx 函数 设置监听【键盘】消息 设置监听【鼠标】消息 如何创建一个窗口 另外一个再录的 Windows SDK教程 里面有讲到快捷创建窗口的方式,不过这样的话要分好几个文件,感觉有点混所以这里就用原始的...

(转载)Win32 SDK编程系列文章——菜单(快捷菜单)——动态加载

理论 创建普通菜单步骤如下: 1)创建菜单 如:CreateMenu 2)   添加菜单项 如:AppendMenu 3)加载菜单         LoadMenu 4)设置菜单到窗口 SetMenu 5)处理菜单响应 6)消除菜单 DestroyMenu 创建右键菜单的步骤如下: 1)创建菜单 如:CreateMenu 2)   添加菜单项 ...

V-REP

vrep文档 目录 vrep文档 一、V-REP编程 1. 编程方式1. 嵌入式脚本 2. API 架构 二、远程控制 1. 远程连接 2. 远程API 三、物体相关 1. 句柄 2. 物体生成 2. 模型导入 3. 碰撞检测 4. 物体抓取 四、视觉相关 1. 相机 2. 视觉传感器 五、ROS接口 1. ROS I...

Windows系统中CreateFileMapping实现的共享内存及用法

在32位的Windows系统中,每一个进程都有权访问他自己的4GB(232=4294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模式。 每个进程都有独立的4GB逻辑地址空间,32位的Windows系统允许每一个进程独立访问自己的内存,即独立于其它进程,也即它自己的32位逻辑地址空间。操作...

windows剪贴板

标准剪贴板数据格式 CF_TEXT CF_OEMTEXT CF_UNICODETEXT CF_LOCALE CF_SYLK:包含“符号链接”数据格式的全局内存块 CF_DIF:包含数据交换格式(DIF)的数据的全局内存块 CF_BITMAP 与设备有关的位图格式 CF_DIB 设备无关的位图的内存块,这种内存块是以位图信息结构开始的,后跟可用的颜色表和位图...

Selenium Webdirver API(1)

Selenium Webdirver API 前提:引入webdriver包 from selenium import webdriver 1、创建浏览器对象driver = webdriver.Ie(executable_path="D:\IEDriverServer")#不同浏览器只需更改浏览器名称即可,如:webdriver.Chrome() web...