gpt4 book ai didi

selenium - 如何将 PhantomJS 路径传递给 Selenium Grid

转载 作者:行者123 更新时间:2023-12-02 21:46:57 27 4
gpt4 key购买 nike

尝试在 Selenium Grid 上设置 phantomjs 节点时遇到错误 ( https://wiki.jenkins-ci.org/display/JENKINS/Selenium+Plugin )

我设置了以下自定义 json 配置:

{
"capabilities": [
{
"browserName": "phantomjs",
"phantomjs.binary.path": "/usr/bin/phantomjs",
"platform": "LINUX",
"maxInstances": 5
}
],
"configuration": {
"nodeTimeout":120,
"port":5555,
"hubPort":4444,
"hubHost":"localhost",
"nodePolling":2000,
"registerCycle":10000,
"register":true,
"cleanUpCycle":2000,
"timeout":30000,
"maxSession":1
}
}

但是当我针对它运行 webdriver 时出现错误:

WebDriverException: Message: The path to the driver executable must be set by the phantomjs.binary.path capability/system property/PATH variable; for more information, see https://github.com/ariya/phantomjs/wiki. The latest version can be downloaded from http://phantomjs.org/download.html
Stacktrace:
at com.google.common.base.Preconditions.checkState (Preconditions.java:199)
at org.openqa.selenium.phantomjs.PhantomJSDriverService.findPhantomJS (PhantomJSDriverService.java:236)
at org.openqa.selenium.phantomjs.PhantomJSDriverService.createDefaultService (PhantomJSDriverService.java:181)
at org.openqa.selenium.phantomjs.PhantomJSDriver.<init> (PhantomJSDriver.java:104)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (NativeConstructorAccessorImpl.java:-2)
at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance (Constructor.java:526)
at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor (DefaultDriverProvider.java:103)
at org.openqa.selenium.remote.server.DefaultDriverProvider.newInstance (DefaultDriverProvider.java:97)
at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance (DefaultDriverFactory.java:60)
at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call (DefaultSession.java:222)
at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call (DefaultSession.java:1)
at java.util.concurrent.FutureTask.run (FutureTask.java:262)
at org.openqa.selenium.remote.server.DefaultSession$1.run (DefaultSession.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
at java.lang.Thread.run (Thread.java:745)
-------------------- >> begin captured logging << --------------------
selenium.webdriver.remote.remote_connection: DEBUG: POST http://127.0.0.1:4444/wd/hub/session {"desiredCapabilities": {"browserName": "phantomjs"}}
selenium.webdriver.remote.remote_connection: DEBUG: Finished Request

如果我停止由插件启动的节点(并保持插件中心运行),并按如下方式手动运行我自己的节点,则它可以正常工作:

java -jar selenium-server-standalone-2.53.0.jar -role webdriver 
-browser browserName=phantomjs,platform=LINUX
-hub http://localhost:4444/grid/register

[编辑] phantomjs 可以从 shell 执行,位于/usr/bin/phantomjs:

$ whereis phantomjs
phantomjs: /usr/bin/phantomjs

我在网上找不到 phantomjs 设置的规范描述,并且这不是该插件提供的默认浏览器选项之一。

<小时/>

上述问题是 /usr/bin/phantomjs 上的操作系统权限;我需要对其执行chmod a+x

<小时/>

厚颜无耻地添加这个额外的问题

这有效(由我手动启动):

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.111.x86_64/jre/bin/java -jar/var/lib/jenkins/selenium-server-standalone-2.53.0 .jar -role webdriver -browser browserName=phantomjs,platform=LINUX -hub http://localhost:4444/grid/register

这不是(由 selenium 插件启动的过程):

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.111.x86_64/jre/bin/java -cp/var/cache/jenkins/war/WEB-INF/lib/remoting -2.56.jar hudson.remoting.Launcher -cp/var/lib/jenkins/selenium-server-standalone-2.53.0.jar:/var/lib/jenkins/htmlunit-driver-standalone-2.20.jar -connectTo localhost: 36322

运行测试时遇到错误:PHPUnit_Extensions_Selenium2TestCase_WebDriverException:该进程尚未退出,因此没有可用的结果

最佳答案

添加答案,以防万一有人错过评论。

请检查 phantomjs 是否对所有用户都具有“x”(执行)访问权限。如果没有,则使用命令更改访问权限。

chmod +x /usr/bin/phantomjs

新错误“进程尚未退出,因此没有可用的结果”主要是由于 selenium/驱动程序版本不匹配造成的。您可以尝试降级selenium的版本。

顺便说一句,您使用的是哪个版本的 phantomjs。

关于selenium - 如何将 PhantomJS 路径传递给 Selenium Grid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37947888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com