当使用selenium-webdriver的警报方法时,我遇到了JavaScript错误:" e为null"
代码:
browser = Watir::Browser.new :firefox
browser.alert.ok; sleep 5
错误:
Selenium::WebDriver::Error::UnknownError: [JavaScript Error: "e is null" {file: "file:///var/folders/f4/rz3xgqkj22zdyldyzrnyx4v40000gn/T/webdriver-profile20140731-47367-tyngix/extensions/fxdriver@googlecode.com/components/command_processor.js" line: 7716}]'
[JavaScript Error: "e is null" {file: "file:///var/folders/f4/rz3xgqkj22zdyldyzrnyx4v40000gn/T/webdriver-profile20140731-47367-tyngix/extensions/fxdriver@googlecode.com/components/command_processor.js"
line: 7716}]' when calling method: [nsICommandProcessor::execute]
环境:
非常感谢任何建议。谢谢!
答案 0 :(得分:1)
try{
driver.findElement(By.xpath("//span")).click();
} catch (UnhandledAlertException uae) {
driver.switchTo.alert().accept();
driver.findElement(By.xpath("//span")).click();
}
我还想指出我使用的是WebDriver,因此语法可能会有所不同。
答案 1 :(得分:1)
所以这不是你想听到的,但这是我的超级黑客解决方案:
target=browser.ul(:id => 'editor_sections').li(:index => j)
target.drag_and_drop_by -300,200
begin
browser.button(:id => 'editor_panel_save').when_present.click
puts "clicked save for module sidebar"
rescue => e
begin
browser.alert.ok
puts Thread.current["name"].white.on_red + ": No events for the " +sectionName + " module"
rescue => e
end
end
正如您所看到的,我的拖放事件会导致jquery警报。我遇到了与browser.alert.ok一样的问题。所以我只是将它包装在一个额外的开始>>救援区。实际上调用了browser.alert.ok并且关闭了警报并且忽略了随机的随机e为空的错误。
如果有人有实际的解决方案,我很乐意看到它。
答案 2 :(得分:0)
我不确定Watir语法,但以下是处理警报的Java代码。
Alert alert=driver.switchTo().alert();
alert.accept();
答案 3 :(得分:-4)
我们无法回答这个问题,因为问题出在你的javascript代码中(没有附加)。
Selenium::WebDriver::Error::UnknownError: [JavaScript Error: "e is null" {file: "file:///var/folders/f4/rz3xgqkj22zdyldyzrnyx4v40000gn/T/webdriver-profile20140731-47367-tyngix/extensions/fxdriver@googlecode.com/components/command_processor.js" line: 7716}]'
问题出在第7716行的command_processor.js中。