HtmlUnitDriver中的Webdriver和弹出窗口

时间:2012-01-12 15:38:04

标签: java webdriver

我目前正在尝试使用webdriver HtmlUnitDriver执行JavaScript弹出窗口,并产生一个奇怪的结果。

使用FirefoxDriver时,相同的代码行正常工作,但一旦切换到HtmlUnitDriver,它就会停止工作。我正在使用的简单代码在这里:

Alert alert = driver.switchTo().alert();
alert.accept();

HtmlUnitDriver是否能够处理Java弹出窗口,或者这是HtmlUnitDriver的限制点。

这是一个Javascript确认弹出窗口。我们尝试通过执行以下操作将firefox属性与HTMLUnitDriver一起使用:

driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3); 

这是不成功的。

一个附带问题,是否需要为HTMLUnitDriver启用JavaScript以便我们与“确认”弹出框进行交互?如果是,是否有人知道如何启用此功能?

driver = new HtmlUnitDriver(capabilities);

似乎不起作用且无法识别。

非常感谢任何帮助。 干杯

1 个答案:

答案 0 :(得分:4)

这似乎是一个长期存在的问题 https://code.google.com/p/selenium/issues/detail?id=1105

我使用JavaScript解决方法来确认弹出窗口。以下是Python中的一个示例:

self.driver = WebDriver(
    command_executor='http://localhost:4444/wd/hub',
    desired_capabilities=DesiredCapabilities.HTMLUNIT)

self.driver.execute_script("window.confirm = function(msg) {return true;};")
self.find_element_by_id('mybutton').click()

在使用之前覆盖confirm()函数,并使其为Accept返回true。然后触发click事件。取消将其更改为false。

非常整洁。我在StackOverflow上的其他地方发现了这个,但不记得在哪里。