2011-12-30 51 views
1

我是Watir的新手,并且正在为我的工作开发测试工具。
我遇到了一个我似乎无法解决的问题,即使在检查了几个网站之后。用Watir附加到javascript窗口的麻烦

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

看到页面如果窗口持有PDF文件,它是一个浏览器窗口,而不是一个模态JavaScript弹出(警告,确认,提示)

它定义开始没有所有正常的菜单等活跃,但它仍然是一个浏览器窗口。您可以按照the Watir Wiki section about new browser windows中所述的方式使用url或标题进行附加,因为您知道这两者(给出您向我们显示的HTML)。

如果您使用的是Watir-Webdriver,使用它的窗口切换命令。现在watirspec这是你最好的参考方法支持,以及他们如何工作。

编辑 感谢您的链接。虽然以上内容适用于新的浏览器窗口,但这不是您所面对的。你在那里有浏览器HTML内的所有东西,在JavaScript中用JavaScript创建。这是所有标准的HTML元素,只要知道发生了什么就可以轻松地进行交互(实际上,这比实现了更容易处理的恕我直言,而不是弹出窗口或单独的窗口)

使用IE开发人员工具,点击链接后,窗口“,单击开发工具工具栏中的图标以刷新开发工具中的DOM,您将能够看到。

最外面的容器看起来是'对话'类的一个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 
+0

我试过使用'Watir :: IE.attach()'方法,同时使用标题和URL,并获得“无法定位窗口”异常。 [链接](https://test.domaonline.com/test/)(仅限IE) - 使用安全声明链接 - 这是其中一个位置的示例。 – swood 2011-12-30 18:20:48

+0

非常感谢!使用您呈现的新信息锻炼魅力。 – swood 2011-12-30 19:06:12