在社区中,我正尝试在EC2服务器上设置Selenium,下面是我到目前为止所采取的步骤。
1.启动4044端口的集线器
java -jar /ebst/wrangler/upla/bin/selenium-server-standalone-3.141.59.jar -role hub -port 4044
2.在4045上注册节点
java -Dwebdriver.chrome.driver="~/chromedriver" -jar ~/selenium-server-standalone-3.141.59.jar -role node -hub http://hubURL:4044/grid/register -port 4045
3.在我的Java代码中启动code驱动程序
import cucumber.api.java.Before;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.MalformedURLException;
import java.net.URL;
public class Test {
WebDriver driver;
@Before
public void setup() throws MalformedURLException {
String nodeURL = "http://hubURL:4044/wd/hub";
System.out.println("setting up");
DesiredCapabilities desiredCapabilities = DesiredCapabilities.chrome();
desiredCapabilities.setBrowserName("chrome");
desiredCapabilities.setPlatform(Platform.LINUX);
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments(
"--verbose",
"--headless",
"--disable-web-security",
"--ignore-certificate-errors",
"--allow-running-insecure-content",
"--allow-insecure-localhost",
"--no-sandbox",
"--disable-gpu");
chromeOptions.merge(desiredCapabilities);
driver = new RemoteWebDriver(new URL(nodeURL), chromeOptions);
System.out.println("setting up done");
}
}
在控制台上,由于超时,我得到了以下错误。
(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),org.openqa.selenium.WebDriverException:未知错误:无法找到Chrome二进制文件(驱动程序信息: chromedriver=74.0.3729.6 platform=Linux 3.10.0-1062.el7.x86_64 x86_64) (警告:服务器没有提供任何堆栈跟踪信息) 命令持续时间或超时: 16毫秒 构建信息:版本:'3.141.59',修订版:'e82be7d358',时间:'2018-11-14T08:25:53‘系统信息:主机:’IP-10-160-169-203.syd.non-c1.macquarie.com‘,ip:'10.160.169.203',os.name:'Linux',os.arch:’amd64 64‘,os.version:'3.10.0-1062.el7.x86_64',java.version:'1.8.0_181’ 驱动程序信息: driver.version:未知命令持续时间或超时: 523毫秒
当我导航回节点服务器时,这是显示的消息。
22:44:05.604 INFO -匹配工厂org.openqa.selenium.grid.session.remote.ServicedSession$Factory (供应商: org.openqa.selenium.chrome.ChromeDriverService) ) 在端口3459上启动(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}) 74.0.3729.6 ChromeDriver 只允许本地连接。 请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。 1567550645.675: bind()失败:无法分配请求的地址(99) 22:44:05.988 INFO ActiveSessionFactory.apply -功能是:{ "browserName":“browserName”,"goog:chromeOptions":{ "args":“-详细”,“--无头”,“-禁用-web-安全”,“-忽略-证书-错误”,“-允许-运行-不安全-内容”,“-允许-不安全-本地主机”,“-无沙箱”、“-端口:4040”、“禁用-gpu”、“扩展”:}、“平台”:"LINUX“、”版本“:”}
我理解错误的发生,因为在我们公司,只有某些端口是可用的,而且每次ChromeDriver都是在随机端口上启动的。为了指定每次ChromeDriver启动的端口,我在ChromeOptions代码中尝试了各种ChromeOptions和RemoteWebDriver规范,但都没有成功。
还有其他人也遇到过这个问题吗?如果是的话,你能给我建议一下该怎么做吗?或者更广泛地说,这是在EC2上启动selenium服务器的正确方式吗?任何帮助都将不胜感激!
发布于 2019-09-04 11:45:57
试着用它来启动chromedriver:
ChromeOptions options = new ChromeOptions();
options.addArguments("--whitelisted-ips");
ChromeDriver driver = new ChromeDriver(options);
发布于 2020-08-07 23:16:11
尝试将-Dwebdriver.chrome.whitelistedIps=
传递到显色驱动器中
喜欢
java -Dwebdriver.chrome.driver="~/chromedriver" -Dwebdriver.chrome.whitelistedIps= -jar ~/selenium-server-standalone-3.141.59.jar -role node -hub http://hubURL:4044/grid/register -port 4045
https://stackoverflow.com/questions/57781945
复制相似问题