我正在尝试将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 INFO [WebDriverServlet。]-初始化WebDriverServlet 09:28:32.543信息[SeleniumServer.boot]-Selenium Server已启动并在端口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:消息:无法从{创建会话 “ desiredCapabilities”:{ “ browserName”:“ htmlunit”, “ javascriptEnabled”:是的, “ version”:“ 2” }, “功能”:{ “ firstMatch”:[ { “ browserName”:“ htmlunit” }, { “ browserName”:“ htmlunit”, “ browserVersion”:“ 2” } ] } } 构建信息:版本:'3.141.0',修订版本:'2ecb7d9a',时间:'2018-10-31T20:22:52' 系统信息:主机:'DESKTOP-xxxx',ip:'xxx.xxx.xxx.xxx',操作系统名称:'Windows 10',os.arch:'amd64',os.version:'10 .0',java。版本:“ 1.8.0_212” 驱动程序信息:driver.version:未知 堆栈跟踪: 在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)
我似乎正确地遵循了文档,但是我不知道错误可能在哪里。
你能告诉我如何解决这个问题吗?
谢谢
答案 0 :(得分: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)
这样,您的脚本就有更好的机会在将来的库升级中生存下来