新手在这里使用Selenium WebDriver并搜索了这个论坛的答案或类似的问题,但没有运气 .
我正在尝试开发自动化,尝试确定何时打开新窗口或选项卡时单击网页链接,如果是,则新窗口或选项卡是否为焦点 .
能够确定它是窗口还是已打开的选项卡非常重要 . 我熟悉在单击之前和之后使用driver.getWindowHandles来确定是否打开了某些东西但是在确定它是窗口还是打开的选项卡时找不到任何内容 .
另外,我知道使用driver.getTitle但它只返回父窗口的 Headers . 在确定新打开的窗口或标签是否清晰时,我无法发现任何内容 .
如果有可能处理这两个问题,是否有人能够至少指出我正确的方向?
4 回答
首先,
这意味着您没有切换到新窗口 . 您需要切换到新窗口,然后验证 Headers .
以下是实现这两个方面的方法:
使用
driver.CurrentWindowHandle
保存当前窗口句柄点击链接打开新窗口
现在,保存列表中的所有窗口句柄
如果窗口句柄的数量大于1,则可以说新窗口已打开 .
使用
SwitchTo()
切换到新窗口 .验证新窗口的 Headers 以检查新窗口是否在焦点上 .
尝试这个简单的C#代码,我对Chrome写了同样的代码,但应该适用于所有浏览器 .
我希望它有所帮助 . 如果没有,请告诉我 .
似乎这些窗口上没有不同的“类型”,只是不同的选项 . 我发现检查它是否是标签或窗口的方法是检查window.menubar.visible . 对于选项卡,它是一个完整的普通窗口,它是真的,对于窗口,菜单是隐藏的,因此是错误的 . 同样适用于window.toolbar.visible .
至少适用于FF和Chrome . 不幸的是不在IE中 . (在IE8中完成测试,这是我安装的版本 . 当然要进行测试..)
例:
您可以尝试使用该方法 - WebElement activeElement()它返回带有焦点的WebElement,或者如果没有可以检测到具有焦点的元素,则返回body元素 .
确定窗口是否不是选项卡的一种方法是使用您的驱动程序执行javascript: