为什么我不能用 robotframework 在 IE 上切换 window?

Why can't I switch window on IE with robotframework?

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

  1. Open Login page .
  2. Enter username & password
  3. Click Login button (after clicking, display popup window and main window is closed at the same time).
  4. Click a button on popup window. ....

这是我的脚本:

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            |

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

日志消息是:

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

上都遇到了这个问题

那么,为什么我无法获取 window 名称?

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

提前致谢。

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

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

要设置保护模式设置,请从“工具”菜单中选择 "Internet Options",然后单击“安全”选项卡。对于每个区域,在标记为 "Enable Protected Mode" 的选项卡底部都会有一个复选框。应为每个区域选中或取消选中此复选框。

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

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

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

感谢和问候,

瑞安男