用Watir附加到javascript窗口的麻烦

时间:2011-12-30 16:54:38

标签: watir watir-webdriver

我是Watir的新手,正在为我的工作开发测试工具 即使在检查了几个网站之后,我也遇到了一个似乎无法解决的问题。

javascript窗口创建如下:(创建的窗口在窗口中保存pdf,因此唯一的“按钮”是最小化,最大化,关闭)

<a id="LogIn_HyperLink2" class="ms-WPTitle" onclick="javascript:var win = new Window({className: 'spread', title: 'Security Statement', top:0, left:1, width:750, height:365, url:'--redacted--/security.pdf', showEffectOptions: {duration:1.0}}); win.setConstraint(true, {left:10, right:20}); win.showCenter(); return false;" href="--redacted--/security.pdf" style="color:#6699cc; font-weight:bold;">Security Statement</a><br>

我尝试过使用

puts browser.modal_dialog(:title, "Security Statement").exists?
puts browser.javascript_dialog.exists?

两人都返回'假'

我应该采取什么方法来附加到这个新窗口,或者更直接地说:如何关闭这个新窗口?

您可以在此link(仅限IE)

中查看该页面

1 个答案:

答案 0 :(得分:1)

如果窗口中包含PDF文件,则它是一个浏览器窗口,而不是模式javascript弹出窗口(警报,确认,提示)

它被定义为在没有所有正常菜单等活动的情况下启动,但它仍然是一个浏览器窗口。您可以使用网址或标题附加the Watir Wiki section about new browser windows中所述,因为您知道这两个(给出了您向我们展示的HTML)。

如果您正在使用Watir-Webdriver,请使用它的窗口切换命令。现在,watirspec是您对所支持方法及其工作方式的最佳参考。

修改  谢谢你的链接。虽然上述情况适用于新的浏览器窗口,但这不是您所面临的问题。你在那里拥有的所有内容都在浏览器HTML中,使用javascript即时在DOM中创建。它是所有标准的HTML元素,一旦你知道发生了什么就很容易与之交互(这实际上是比弹出窗口或单独窗口更容易处理的恕我直言)

使用IE开发人员工具,在单击显示“窗口”的链接后,单击开发工具工具栏中的图标以刷新开发工具中的DOM,您将能够看到它。 / p>

最外面的容器似乎是类'对话'的div,这在DOM中是唯一的。

窗口控件是在该窗口下的三个div,类为“spread_close”,“spread_minimize”,“spread_maximize”。有三个表格可以容纳“窗口”的顶部,侧面和底部的图形元素,但那里有零的实际内容,它只是一个可视窗口框架。

还有一个iframe叠加了那个窗口,我觉得内容会是(我无法加载它,也许是因为我没有获得它或其他东西的授权)

如果您只想关闭窗口,请尝试以下操作:

browser.div(:class => 'spread_close').click

由于存在大量客户端JS代码,因此在您第一次开始与之交互之前单击链接后,可能需要使用类似'when_present'的方法。例如,如果你想要做的只是点击链接打开它,然后关闭它,你会做这样的事情

browser.link(:text => 'Security Statement').click
browser.div(:class => 'spread_close').when_present.click