为什么我不能用机器人框架在IE上切换窗口?

时间:2015-05-18 10:56:41

标签: internet-explorer robotframework browser-automation

切换到弹出窗口时出现错误。 我的情况:

  
      
  1. 打开 Login page
  2.   
  3. 输入用户名&密码
  4.   
  5. 点击 Login button 点击后,显示弹出窗口,主窗口同时关闭)。
  6.   
  7. 单击弹出窗口上的按钮。   ....
  8.   

这是我的剧本:

Open Browser                  | ${login page url}           | IE
Wait Until Element Is Visible | id=username_tbx             |
Input Text                    | id=username_tbx             | username1
Input Text                    | id=password_tbx             | password1
Click Element                 | id=login_btn                | #after clicking, the popup is displayed
@{Window Names}               |Wait Until Keyword Succeeds  | 20s   | 1s | Get Window Names
Select Window                 | @{Window Names}[1]          |
Click Element                 | id=something_btn            |

主窗口关闭并显示弹出窗口时,脚本失败。我无法获得弹出窗口的名称。

日志消息是:

20150518 17:39:33.544 :  INFO : Clicking element 'id=login_btn'.
20150518 17:39:36.724 :  FAIL : 
NoSuchWindowException: Message: Unable to get browser

20150518 17:39:36.725 :  WARN : 
Keyword 'Capture Page Screenshot' could not be run on failure: NoSuchWindowException: Message: Unable to get browser

20150518 17:39:36.808 :  FAIL : 
NoSuchWindowException: Message: Window is closed
....
....
20150518 17:39:57.474 :  FAIL : 
Timeout 20 seconds exceeded. The last error was: NoSuchWindowException: Message: Window is closed

Ending test:   Demo.Scenario.1.TC_1

我在 IE10,11

上都遇到了这个问题

所以,为什么我无法获得窗口名称?

请告诉我如何解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用最新版本的Selenium2Library (v1.7.0),我的脚本可以成功运行并且没有任何错误。我的问题解决了 感谢开发团队!

答案 1 :(得分:0)

尝试在“保护模式”设置中为每个区域保留相同的值。

要设置保护模式设置,请从“工具”菜单中选择“Internet选项”,然后单击“安全”选项卡。对于每个区域,标签底部将显示一个标记为“启用保护模式”的复选框。应为每个区域选中或取消选中此复选框。

只要每个区域(Int​​ernet,本地Intranet,受信任的站点,受限制的站点)都相同,就可以启用或禁用此值。 建议将其保持为启用状态,因为取消选中它会使您的计算机面临风险。

以上解决方案对我们有用。

原因 - 似乎浏览器正在检测第二个窗口或其URL作为潜在的安全威胁,并且正在运行具有极大限制权限的Internet Explorer进程。因为RobotFramework(Selenium2Library)无法检测到第二个窗口。

谢谢和问候,

Ryan M