Python-无法使用htmlunitdriver

时间:2019-05-08 07:51:25

标签: java python selenium

我正在尝试将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)

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

谢谢

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)

这样,您的脚本就有更好的机会在将来的库升级中生存下来