【robotframework之六】切换到新的窗口

一、参考资料

https://www.cnblogs.com/testwang/p/6097621.html

二、切换及定位关键字

怎么切换窗口呢?首先可以F5,查看可以用到的关键字:

Select Window:选择浏览器窗口匹配定位器。如果找到该窗口,所有后续命令都将使用所选窗口,直到再次使用该关键字。如果没有找到窗口,则此关键字将失败。返回前一个窗口句柄,并可用于稍后返回该句柄。

找到切换窗口的关键字后,我们要继续寻找定位窗口的关键字,同样F5,如下图:

Get Window Handles:以列表的形式返回所有当前窗口句柄。

Get Window Identifiers:返回并记录所有已知浏览器窗口的id属性。

Get Window Names:返回和记录所有已知浏览器窗口的名称。

Get Window Position:返回当前窗口的位置。

Get Window Size:以整数形式返回当前窗口的宽度和高度。

Get Window Titles:返回和记录所有已知浏览器窗口的标题。

三、Get Window Handles切换窗口

1、打开CSDN的首页

CSDN - 专业开发者社区

2、点击首页的登录链接,进入登录页面

通过如上截图,我们可以看到,新开的页面没有定义ID和name,查看源文件的head,title也是一致的:

所以,我们可以排除id、name和title的定位方式,使用句柄来定位。

3、通过Get Window Handles获取窗口所有句柄

首先查看一下整个登录的脚本,如下图:

可以很明显看到,select window by handle关键字为黑色,代表该关键字不存在,这里我们需要扩展Selenium2Library库,参考如下地址的资料:https://www.cnblogs.com/testwang/p/6097621.html

四、扩展Selenium2Library库
1、编辑windowmanager.py文件
首先,进入Selenium2Library文件夹,我本地的地址:C:\Python27\Lib\site-packages\Selenium2Library,文件夹里面只有__init__.py文件,打开该文件

可以看到,它是引用了SeleniumLibrary,所以我们到SeleniumLibrary文件夹找到相对应的文件进行更改即可;进入地址:C:\Python27\Lib\site-packages\SeleniumLibrary\locators,可以看到windowmanager.py文件,编辑该文件,加上如下代码:

2、编辑browsermanagement.py文件

同样进入地址:C:\Python27\Lib\site-packages\SeleniumLibrary\keywords

编辑browsermanagement.py,加上如下代码:

五、根据参考地址代码扩展Selenium2Library库后依然出现的问题

1、在windowmanager.py和browsermanagement.py中新增方法后,重新打开robotframework,select window by handle关键字依然为黑色
解决方案:

1.1、查看browsermanagement.py文件,发现每个关键字函数前都存在@keyword,同样在每个函数前加上:

 1.2、重新ride.py打开robotframework,select window by handle关键字变为蓝色

 

 2、执行登录脚本报错,AttributeError: 'BrowserManagementKeywords' object has no attribute '_current_browser'

 

 解决方案:

2.1、将_current_browser()改为drivers.current,如下图:

 2.2、重新打开robotframework,执行登录脚本,执行成功

六、完结

综上,登录脚本执行成功,成功定位并切换到了新的窗口,F5查看关键字,select window by handle也展示在了关键字列表

具体引用方法:

  1.  ${handles} Get Window Handles #获得句柄列表
  2.  select window by handle ${handles[1]} #根据句柄索引切换到新打开的窗口,索引从0开始,0代表原页面,1代表新打开的页

七、版本更新后原代码不适用新的规则集锦
执行之后报错,

提示: _get_window_infos() takes 1 positional argument but 2 were given;

更改 windowmanager.py文件,将self._get_window_infos(browser)中的browser去掉即可;

如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值