当前位置: 首页 > 面试题库 >

使用WebDriver时是否可以忽略JavaScript异常(HtmlUnit,Ruby绑定)

翟淇
2023-03-14
问题内容

当我加载页面时,HtmlUnit引发异常并使测试崩溃

caps = Selenium::WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => true)
driver = Selenium::WebDriver.for(:remote, :desired_capabilities => caps)
driver.navigate.то url

ReferenceError:未定义“
x”。(net.sourceforge.htmlunit.corejs.javascript.EcmaError)

如果我使用Firefox驱动程序,则不会引发任何异常。

caps = Selenium::WebDriver::Remote::Capabilities.firefox

或为HtmlUnit驱动程序禁用JavaScript

caps = Selenium::WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => false)

我无法更改测试页上的代码并解决问题,因此我需要忽略它,或者以任何方式使用Firefox JavaScript Engine而不是标准的HtmlUnit
JavaScript Engine。

是否可以在不更改测试页代码的情况下解决我的问题?

更新: 尝试将Capybara + WebKit替换为Selenium + HtmlUnit的替代方法-
正常运行,没有错误。但是我仍然想在不更改框架的情况下解决问题。


问题答案:

查看的来源后HtmlUnitDriver,似乎无法自定义要更改的行为。解决此问题最简单的方法是修补并重新编译Selenium服务器(可能是,也可能不是)。您需要添加以下行:

--- HtmlUnitDriver.java 2012-01-05 17:45:22.779579136 +0100
+++ HtmlUnitDriver.java 2012-01-05 18:14:51.415106195 +0100
@@ -255,6 +255,7 @@
     WebClient client = newWebClient(version);
     client.setHomePage(WebClient.URL_ABOUT_BLANK.toString());
     client.setThrowExceptionOnFailingStatusCode(false);
+    client.setThrowExceptionOnScriptError(false);
     client.setPrintContentOnFailingStatusCode(false);
     client.setJavaScriptEnabled(enableJavascript);
     client.setRedirectEnabled(true);


 类似资料:
  • 问题内容: 为了检查是否存在Element和clickble,我尝试编写一个布尔方法,该方法将等待使用C#selenium的webDriverWait启用和显示该元素,如下所示: webDriverWait等待=新的webDriverWait(驱动程序,timeSpan.fromSeconds(60)); Wait.untill(d => webElement.enabled()&& webEle

  • 问题内容: 标头中包含以下行: 这实际上改变了我的python日志记录设置,但是pylint认为这是未使用的导入。我一般不希望删除警告,因此可以忽略这一行吗? 我不介意为此项目准备一个,因此更改配置文件的答案将被接受。 否则,这样的事情也会受到赞赏: 问题答案: Pylint消息控件记录在Pylint手册中: 是否可以在本地禁用特定消息? 是的,此功能已在Pylint 0.11中添加。这可以通过

  • 我很难理解这个HTMLUnit异常的含义。当我在网页上的链接上调用click()时,就会发生这种情况。

  • 这是我的xpath: Selenium WebDriver代码忽略了上述xpath中::之后的所有内容。 下面是当我在上面使用xpath作为定位器来标识页面中的元素时,在selenium中遇到的错误。 关于如何让webdriver接受上面的整个xpath,有什么想法或建议吗? 下面是HTML代码: 以下是WebDriverJava代码: 元素是一个复选框,我试图通过应用方法来检查它。单击()。 下

  • 问题内容: 我正在浏览Selenium WebDriver的文档,例如它可以驱动Chrome。我当时在想,“驱动” PhantomJS效率会更高吗? 有没有办法将Selenium与PhantomJS一起使用? 我的预期用途是进行网页抓取:我抓取的网站上加载了AJAX和许多可爱的JavaScript,并且我认为此设置可以很好地替代我目前使用的Scrapy Python框架。 问题答案: Phanto