我目前正在尝试使用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);
似乎不起作用且无法识别。
非常感谢任何帮助。 干杯
答案 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上的其他地方发现了这个,但不记得在哪里。