Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理JavaScript错误:;e为空”;尝试在Firefox中单击浏览器弹出窗口时_Javascript_Firefox_Testing_Selenium Webdriver_Watir Webdriver - Fatal编程技术网

如何处理JavaScript错误:;e为空”;尝试在Firefox中单击浏览器弹出窗口时

如何处理JavaScript错误:;e为空”;尝试在Firefox中单击浏览器弹出窗口时,javascript,firefox,testing,selenium-webdriver,watir-webdriver,Javascript,Firefox,Testing,Selenium Webdriver,Watir Webdriver,在使用SeleniumWebDriver的警报方法时,我遇到了JavaScript错误:“e为null” 代码: 错误: Selenium::WebDriver::Error::UnknownError: [JavaScript Error: "e is null" {file: "file:///var/folders/f4/rz3xgqkj22zdyldyzrnyx4v40000gn/T/webdriver-profile20140731-47367-tyngix/extensions/fx

在使用SeleniumWebDriver的警报方法时,我遇到了JavaScript错误:“e为null”

代码:

错误:

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]
环境:

  • “selenium webdriver”,“2.42.0”
  • Firefox31.0
  • MAC 10.9
  • Ruby 2.0

如有任何建议,将不胜感激。谢谢

我们无法真正回答这个问题,因为问题出在您的javascript代码中(未附加)


问题出在第7716行的command_processor.js中。

我不确定Watir语法,但下面是处理警报的Java代码

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

我的错误是由JavaScript警报引起的。有一个Ajax日期选择器,它间歇地部分渲染。虽然这是应用程序中应该纠正的问题,但同时,我可以通过以下方式处理:

try{
    driver.findElement(By.xpath("//span")).click();
   } catch (UnhandledAlertException uae) {
    driver.switchTo.alert().accept();
    driver.findElement(By.xpath("//span")).click();
   }

我还想指出,我使用的是WebDriver,所以语法可能会有所不同。

所以这不是你想听到的,但这是我的超级黑客解决方案:

  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警报。我的浏览器出现了与您相同的问题。alert.ok不总是工作。所以我只是把它包装在一个额外的begin>>救援块中。实际上调用了browser.alert.ok,警报被解除,讨厌的随机e为null错误被忽略


如果有人有实际的解决方案,我很乐意看到。

页面上是否存在警报?这些javascript错误与Firefox中包含的WebDriver API有关。您使用的是什么版本的Watir Webdriver?页面上存在“是”警报。我使用的是gem'watirwebdriver'-0.6.10,你知道如何处理这个问题吗?你能包括页面的HTML和导致错误的ruby代码吗?当我运行您提供的代码时,我会得到一个指向Watir Webdriver代码的
Watir::Exception::UnknownObjectException
,因为运行代码示例时不存在警报。
browser=Watir::browser.new:firefox new\u new=Onepage.new(:browser=>browser)new\u new.browser.alert.ok
在没有HTML的情况下无法修复此问题,很难确定错误是什么。我知道,但我认为该文件是WatirWebDriver的一部分。还有其他想法吗?这个JS错误来自Firefox中包含的WebDriver扩展。是的,这个错误是由browser.alert.ok引起的,这有点不寻常。我想跟进一下。这个答案部分地解决了这个问题。我还必须为每个连接的方法添加Thread.sleep(6000)和InterruptedException。我认为您使用的是Ruby,因此您可以在其他地方参考它。
try{
    driver.findElement(By.xpath("//span")).click();
   } catch (UnhandledAlertException uae) {
    driver.switchTo.alert().accept();
    driver.findElement(By.xpath("//span")).click();
   }
  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