【问题标题】:driver.get not working in Selenium Webdriver, Javadriver.get 在 Selenium Webdriver,Java 中不起作用
【发布时间】:2015-07-20 16:39:14
【问题描述】:

在某个网站(driver.get("http://steamcommunity.com/market/search?appid=730"))上使用driver.get 时,我收到此错误:

Exception in thread "main" org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: Exception invoking fireEvent
Build info: version: '2.45.0', revision: '5017cb8', time: '2015-02-26 23:59:50'
System info: host: 'daltonpc', ip: '10.0.0.2', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_45'
Driver info: driver.version: HtmlUnitDriver
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:504)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:480)
    at org.openqa.selenium.example.FinderClass.findOtherWeapon(FinderClass.java:60)
    at org.openqa.selenium.example.Main.main(Main.java:20)
Caused by: com.gargoylesoftware.htmlunit.ScriptException: Exception invoking fireEvent
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:705)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:620)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:513)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:637)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:612)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:1001)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventListeners(EventListenersContainer.java:179)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:239)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:824)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:748)
    at com.gargoylesoftware.htmlunit.html.HtmlElement$1.run(HtmlElement.java:920)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:620)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:513)
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:925)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1298)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:290)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:475)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:342)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:407)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:491)
    ... 3 more
Caused by: java.lang.RuntimeException: Exception invoking fireEvent
    at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:148)
    at net.sourceforge.htmlunit.corejs.javascript.FunctionObject.call(FunctionObject.java:448)
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1531)
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798)
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:411)
    at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:309)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3057)
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:103)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$4.doRun(JavaScriptEngine.java:630)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:690)
    ... 22 more
Caused by: com.gargoylesoftware.htmlunit.ScriptException: illegal radix 0. (http://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_global.js?v=BESEFoKTgss6&l=english#1358)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:705)
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:620)
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:513)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:637)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:612)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:1001)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventListeners(EventListenersContainer.java:179)
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:239)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:814)
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:748)
    at com.gargoylesoftware.htmlunit.javascript.host.EventNode.fireEvent(EventNode.java:396)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:120)
    ... 32 more
Caused by: net.sourceforge.htmlunit.corejs.javascript.EvaluatorException: illegal radix 0. (http://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_global.js?v=BESEFoKTgss6&l=english#1358)
    at com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter.runtimeError(StrictErrorReporter.java:81)
    at net.sourceforge.htmlunit.corejs.javascript.Context.reportRuntimeError(Context.java:1047)
    at net.sourceforge.htmlunit.corejs.javascript.Context.reportRuntimeError(Context.java:1094)
    at net.sourceforge.htmlunit.corejs.javascript.Context.reportRuntimeError1(Context.java:1062)
    at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.numberToString(ScriptRuntime.java:813)
    at net.sourceforge.htmlunit.corejs.javascript.NativeNumber.execIdCall(NativeNumber.java:129)
    at net.sourceforge.htmlunit.corejs.javascript.IdFunctionObject.call(IdFunctionObject.java:89)
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1531)
    at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798)
    at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$4.doRun(JavaScriptEngine.java:630)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:690)
    ... 47 more

它适用于其他 url,它也适用于这个,直到我通过将 true 放入 WebDriver driver = new HtmlUnitDriver(true); 来启用 javascript。我需要这样做,因为我的程序在没有 javascript 的情况下无法正常工作,而且这个 Steam 社区市场页面似乎需要 javascript 才能访问它,即使只需输入 url。我做错了什么?

【问题讨论】:

  • 只是一个建议,但尝试使用 PhantomJSdriver 之类的东西,我发现它与 Htmluntidriver 相比相当稳定。
  • 您需要提及您要模拟的浏览器。因此,当您初始化驱动程序时,只需添加 HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.CHROME); FYI: htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/htmlunit/…

标签: java javascript selenium selenium-webdriver steam


【解决方案1】:

使用用户代理将解决ScriptException。使用DesiredCapabilties 这样做。见以下代码:

DesiredCapabilities capabilities = DesiredCapabilities.htmlUnit();
capabilities.setBrowserName("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20160101 Firefox/66.0");

HtmlUnitDriver driver = new HtmlUnitDriver(capabilities);
driver.setJavascriptEnabled(true);

driver.get("http://steamcommunity.com/market/search?appid=730");
System.out.println(driver.getPageSource());

这很好用。

虽然,另一种解决方案是使用PhantomJSDriver,我发现它在定位元素方面要好得多。

下载PhantomJS.exe文件并将exe的文件路径设置为PHANTOMJS_EXECUTABLE_PATH_PROPERTY

public class CopyOfTest1 
{
PhantomJSDriver driver;
WebDriverWait wait;
DesiredCapabilities capabilities;

CopyOfTest1()
{
    //set binary path of phantomJS driver
    capabilities = new DesiredCapabilities();       
    capabilities.setJavascriptEnabled(true);
    capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "drivers/phantomjs.exe");
    capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX,"Y");
    capabilities.setCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:16.0) Gecko/20121026 Firefox/16.0");

    //intialize driver and set capabilties
    driver = new PhantomJSDriver(capabilities);
    //intitlaize webdriverwait class
    wait = new WebDriverWait(driver, 30);
}

void start()
{
    driver.get("http://steamcommunity.com/market/search?appid=730");
    System.out.println(driver.getPageSource());
    driver.quit();
}

public static void main(String[] args) throws Exception
{
    new CopyOfTest1().start();
}
}

【讨论】:

  • 包含此代码后,我仍然收到“异常调用 fireEvent”错误。但是,如果我尝试不同的网址 (steamcommunity.com/market/search?appid=730#p1_price_asc),我会收到此错误:TypeError: Cannot read property "type" from null (http://steamcommunity-a.akamaihd.net/public/javascript/jquery-1.11.1.min.js?v=.isFTSRckeNhC#2)
  • 这段代码对我有用。我建议您尝试使用 PhantomJSDriver。它更稳定。
  • 我尝试了 PhantomJSDriver,它给我带来的问题比以前更多!由于某种原因,它完全不一致,这意味着如果我多次运行程序而不更改代码,每次都会得到不同的结果!即使使用driver.quit()driver.close(),phantomjs 任务也永远不会退出,我必须使用任务管理器手动结束进程。如果您知道任何解决此问题的方法,请告诉。
  • 我给了你一个我拥有的 PhantomJSDriver 的小示例代码。下载 phantomjs.exe 文件并将其文件路径设置为PHANTOMJS_EXECUTABLE_PATH_PROPERTY。例如,我的项目文件夹中有这个文件 - "drivers/phantomjs.exe"
  • 好的,谢谢。但它仍然非常奇怪。有时当我运行它时它会找不到某个元素,但有时我运行它会发现它很好。在不修改任何代码的情况下会发生这种情况?
【解决方案2】:

您在 url 中缺少双引号 "。请尝试以下操作

driver.get("http://steamcommunity.com/market/search?appid=730")

【讨论】:

  • 这只是我的一个复制和粘贴错误,它在我的原始代码中有引号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多