指定运行ChromeDriver的端口

时间:2019-09-04 05:23:45

标签: java selenium selenium-webdriver amazon-ec2 selenium-grid

H社区,我正在尝试在EC2服务器上设置Selenium Grid,下面是我到目前为止所采取的步骤。

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代码启动Webdriver

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");

    }
}

在控制台上,由于超时,出现以下错误。

  

org.openqa.selenium.WebDriverException:未知错误:找不到Chrome二进制

     

(驱动程序信息:chromedriver = 74.0.3729.6(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs / branch-heads / 3729 @ {#29})),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',操作系统名称:'Linux',os.arch:'amd64',os.version:'3.10.0-1062.el7.x86_64', java.version:“ 1.8.0_181”

     

驱动程序信息:driver.version:未知命令持续时间或超时:523毫秒

当我导航回节点服务器时,这是显示的消息。

  

22:44:05.604信息[ActiveSessionFactory.lambda $ apply $ 11]-匹配的工厂org.openqa.selenium.grid.session.remote.ServicedSession $ Factory(提供者:org.openqa.selenium.chrome.ChromeDriverService)      

在端口3459上启动ChromeDriver 74.0.3729.6(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs / branch-heads / 3729 @ {#29})

     

仅允许本地连接。

     

请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码访问。

     

[1567550645.675] [SEVERE]:bind()失败:无法分配请求的地址(99)

     

22:44:05.988信息[ActiveSessionFactory.apply]-功能为:{     “ browserName”:“ chrome”,     “ goog:chromeOptions”:{       “参数”:[         “ --verbose”,         “-无头”,         “ --disable-web-security”,         “ --ignore-certificate错误”,         “-允许运行不安全的内容”,         “ --allow-insecure-localhost”,         “-无沙箱”,         “ --port:4040”,         “ --disable-gpu”       ],       “扩展名”:[       ]     },     “ platform”:“ LINUX”,     “版本”:“”   }

我知道发生此错误是因为在我们公司内部,只有某些端口可用,并且每次都会在随机端口上启动ChromeDriver。为了指定此ChromeDriver每次启动的端口,我尝试用Java代码对ChromeOptions和RemoteWebDriver进行各种规范,但徒劳无功。

其他人也遇到过这个问题吗?如果可以的话,您能给我一些建议吗?或更广泛地说,这是在EC2上启动硒服务器的正确方法吗? 任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

尝试使用它启动chromedriver:

ChromeOptions options = new ChromeOptions();
options.addArguments("--whitelisted-ips");

答案 1 :(得分:0)

尝试将-Dwebdriver.chrome.whitelistedIps=传递给chromedriver

喜欢

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