Selenium实战技巧-多页面和Windows控件处理

本文章出自【码同学软件测试】

码同学公众号:自动化软件测试,领取资料可加:Matongxue_8

码同学抖音号:小码哥聊软件测试

 

多页面处理

 

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

 

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

 

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

 

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

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

Selenium WebDriver 句柄处理Api:

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

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

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

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

 

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

免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,,领取资料可加:Matongxue_8

 

 

Windows控件

 

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

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

 

JavaRobot常用API

 

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

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

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

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

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

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

 

END

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可加:Matongxue_8/关注码同学公众号

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 

posted @ 2022-01-06 10:23  码同学软件测试  阅读(64)  评论(0编辑  收藏  举报