autojs遍历当前页面所有控件_Selenium实战技巧-多页面和Windows控件处理

多页面处理

做UI自动化的时候常常会遇到浏览器弹出新的Tab页,或者需要在多个网页服务之间来回取数据的情况。

比如在Testfan社区的首页点击文章“Jmeter使用?”的链接,浏览器会弹出一个新的页面显示“Jmeter使用?”这篇文章的详情。此时如果用Selenium Webdriver去查找该页面中的元素,会发现抛出空指针报错。

这是因为Selenium Webdriver只能指向一个HTML页面,而此时Webdriver仍然指向Testfan社区的首页,只能查找到Testfan首页的内容。

6fc3c127c4a9df084098d08876bb7c3c.png

遇到这种情况我们需要用到句柄来处理不同页面的切换。

在使用句柄以前,我们先了解它的基本概念,我们可以把通过Selenium WebDriver打开的每一个页面都看做一个小球,每个小球有唯一的标识(这个标识就是句柄)。我们的手就相当于WebDriver,它通过获取所有的小球,依次遍历查看小球的详情(比如Title)来判断小球是不是我们要的页面。如果是,则通过小球的唯一标识(句柄),把WebDriver指向到我们需要的网页页面,然后再进行元素处理。

ac353e95d0f87a873eb1b6bb8961e07e.png

Selenium WebDriver 句柄处理Api:

• driver.getwindowhandles() 获取当前浏览器打开的所有页面

• driver.getwindowhandle() 获取当前“活跃”页面

• driver.getTitle() 获取当前“活跃”页面的标题

• driver.switchTo().windows(handleName) 切换“活跃”页面

通过上述Api,我们可以实现多页面的切换和处理:

ba730c6487640bde01d83aad3b375f95.png

Windows控件

UI自动化中常常遇到上传文件的场景,以百度图片上传为例,上传是基于Windows的控件完成的(点击上传以后,会弹出Windows文件系统,让你选择Windows路径下的文件)。

60cea0d0a5a0e133f8258050e00cbbea.png

d9d6ce205ec1beb243eb22688b8d0f04.png

Selenium只能处理网页元素,无法处理Windows控件,遇到这种情况我们可以基于JavaRobot来处理Windows的控件。JavaRobot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件,可以实现Windows的自动化测试。

JavaRobot常用API

790364af791a2916c239e9137bd517ee.png

以处理Windows弹窗选择文件为例,当我们点击网页元素,出现Windows弹窗后,可按下述逻辑处理:

• 基于Tookit往剪贴板输入文件路径

• 使用JavaRobot Enter键将光标移动到输入框

• 使用JavaRobot CTRL+C 键拷贝剪贴板中的内容

• 使用JavaRobot CTRL+V 粘贴内容到光标出

• 使用JavaRobot ENTER键 关闭Windows弹窗并上传文件

473adf52803d22b8f4271993e24d2e0f.png

作  者:Testfan Kitty
出  处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值