【问题标题】:Python - Unable to create session with Selenium standalone server with htmlunitdriverPython - 无法使用 htmlunitdriver 创建与 Selenium 独立服务器的会话
【发布时间】:2019-05-08 07:51:25
【问题描述】:

我正在尝试将 selenium 远程独立服务器与带有 python 脚本的 htmlUnit 驱动程序一起使用。
首先,我使用 htmlUnit 驱动程序启动独立服务器

java -cp htmlunit-driver-2.35.1-jar-with-dependencies.jar -jar selenium-server-standalone-3.141.0.jar

09:28:31.731 INFO [GridLauncherV3.parse] - Selenium 服务器版本:3.141.0,修订:2ecb7d9a 09:28:31.810 INFO [GridLauncherV3.lambda$buildLaunchers$3] - 在端口 4444 上启动一个独立的 Selenium 服务器 2019-05-08 09:28:31.857:INFO::main: 日志初始化 @317ms 到 org.seleniumhq.jetty9.util.log.StdErrLog 09:28:32.059 信息 [WebDriverServlet.] - 初始化 WebDriverServlet 09:28:32.543 INFO [SeleniumServer.boot] - Selenium 服务器已启动并在端口 4444 上运行

之后我尝试在我的 pyhton 脚本中使用 htmlunit 驱动程序

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.keys import Keys
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities={'browserName': 'htmlunit', 'version': '2','javascriptEnabled': True})
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

但我收到此错误

selenium.common.exceptions.SessionNotCreatedException:消息:无法从 { “所需能力”:{ "browserName": "htmlunit", “javascriptEnabled”:是的, “版本”:“2” }, “能力”:{ “第一场比赛”:[ { “浏览器名称”:“htmlunit” }, { "browserName": "htmlunit", “浏览器版本”:“2” } ] } } 构建信息:版本:'3.141.0',修订:'2ecb7d9a',时间:'2018-10-31T20:22:52' 系统信息:主机:'DESKTOP-xxxx',ip:'xxx.xxx.xxx.xxx',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java。版本:'1.8.0_212' 驱动程序信息:驱动程序版本:未知 堆栈跟踪: 在 org.openqa.selenium.remote.server.NewSessionPipeline.lambda$null$4 (NewSessionPipeline.java:76) 在 java.util.Optional.orElseThrow(无:-1) 在 org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession$5 (NewSessionPipeline.java:75) 在 java.util.Optional.orElseGet(无:-1) 在 org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession (NewSessionPipeline.java:73) 在 org.openqa.selenium.remote.server.commandhandler.BeginSession.execute (BeginSession.java:65) 在 org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle$0 (WebDriverServlet.java:235) 在 java.util.concurrent.Executors$RunnableAdapter.call(无:-1) 在 java.util.concurrent.FutureTask.run (无:-1) 在 java.util.concurrent.ThreadPoolExecutor.runWorker (无:-1) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run (无:-1) 在 java.lang.Thread.run(无:-1)

我似乎正确地遵循了文档,但我不明白错误可能出在哪里。
您能告诉我如何解决这个问题吗?

谢谢

【问题讨论】:

    标签: java python selenium


    【解决方案1】:

    根据java command line documentation:

    当你使用-jar选项时,指定的JAR文件是所有用户类的来源,其他类路径设置被忽略。

    因此,您需要修改用于启动 Selenium Grid 的命令,如下所示:

    java -cp "htmlunit-driver-2.35.1-jar-with-dependencies.jar;selenium-server-standalone-3.141.59.jar" org.openqa.grid.selenium.GridLauncherV3
    

    我还建议更改此行:

    driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities={'browserName': 'htmlunit', 'version': '2','javascriptEnabled': True})
    

    到这个:

    driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities=webdriver.DesiredCapabilities.HTMLUNITWITHJS)
    

    这样你的脚本就有更好的机会在未来的库升级中幸存下来

    【讨论】:

    • 仔细检查您的语法和文件的存在。 i.stack.imgur.com/sVPtm.png。如果您现在不想升级到最新的 Selenium 版本,您可能还需要将 selenium-server-standalone-3.141.59.jar 更改为 selenium-server-standalone-3.141.0.jar
    猜你喜欢
    • 2017-06-29
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多