当前位置: 首页 > 面试题库 >

如何使用xvfb将具有所需功能的Chrome驱动程序服务合并为无头?

席俊
2023-03-14
问题内容

我想ChromeDriverService与xvfb chromeOptions一起DesiredCapabilities运行。

以下是ChromeDriverService我以前不使用硒网格的部分代码。

String NodeChromeIncognito = "http://localhost:5558/wd/hub"

         ChromeDriverService chromeDriverService = new ChromeDriverService.Builder()
         .usingDriverExecutable(new File("driver_linux/chromedriver"))
         .usingAnyFreePort()
         .withEnvironment(ImmutableMap.of("DISPLAY", ":1")).build();
     chromeDriverService.start();
    // commented because using RemoteWebDriver
    // driver = new ChromeDriver(chromeDriverService);

下面是我将与合并的RemoteWebDriver的部分代码ChromeDriverService

DesiredCapabilities cap = null;
String NodeChromeIncognito = "http://localhost:5558/wd/hub";
String NodeChrome = "http://localhost:5557/wd/hub";
String NodeFirefox = "http://localhost:5556/wd/hub";

    if (browserName.equals("chrome")) {
        cap = DesiredCapabilities.chrome();
        cap.setBrowserName("chrome");
        driver = new RemoteWebDriver(new URL(NodeChrome), cap);
    } else if (browserName.equals("firefox")) {
        System.setProperty("webdriver.gecko.driver", "driver_linux/geckodriver");
        cap = DesiredCapabilities.firefox();
        cap.setCapability("marionette", true);
        driver = new RemoteWebDriver(new URL(NodeFirefox), cap);
    }else if (browserName.equals("chromeIncognito")) {
        ChromeOptions option = new ChromeOptions();
        option.addArguments("--incognito");

        cap = DesiredCapabilities.chrome();
        cap.setCapability(ChromeOptions.CAPABILITY, option);
        cap.setPlatform(Platform.WIN10);
        cap.setBrowserName("chrome incognito");
        driver = new RemoteWebDriver(new URL(NodeChromeIncognito), cap);
    }

我知道我可以使用addArguments("-- headless")chrome,但是它不能与我的webApp一起很好地工作。而且我也用过DesiredCapabilities.merge和错误。

如何ChromeDriverService使用ChromeOptions或合并代码/配置DesiredCapabilites


问题答案:

至于你提到要合并 ChromeDriverService* 使用 ChromeOptions 或者与
DesiredCapabilities 两者都可以实现。但从当前 Selenium Java Client 版本开始,
不推荐使用 以下 构造 方法:

*

ChromeDriver(Capabilities capabilities)
//and
ChromeDriver(ChromeDriverService service, Capabilities capabilities)

因此,我们必须使用以下任一选项:

  • 选项A:仅使用ChromeOptions
        private static ChromeDriverService service;
    private WebDriver driver;
    //code block
    service = new ChromeDriverService.Builder()
     .usingDriverExecutable(new File("path/to/my/chromedriver.exe"))
     .usingAnyFreePort()
     .build();
    chromeDriverService.start();

    ChromeOptions option = new ChromeOptions();
    option.addArguments("--incognito");
    driver = new RemoteWebDriver(service.getUrl(), options);
  • 选项B:使用DesiredCapabilities,然后使用merge()from MutableCapabilities合并到ChromeOptions
        private static ChromeDriverService service;
    private WebDriver driver;
    //code block
    service = new ChromeDriverService.Builder()
     .usingDriverExecutable(new File("path/to/my/chromedriver.exe"))
     .usingAnyFreePort()
     .build();
    chromeDriverService.start();        
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("...", true);
    ChromeOptions option = new ChromeOptions();
    option.addArguments("--incognito");
    option.merge(capabilities);
    driver = new RemoteWebDriver(service.getUrl(), options);


 类似资料:
  • 问题内容: 我正在尝试使用webdriver尝试phantomJS,但在处理JavaScript警报时遇到了麻烦。我注意到phantomjs驱动程序desired_capabilities有一个字段。 有没有办法将此值设置为true?我已经尝试了明显的方法,但是没有任何效果: 我可以更改字典中的值,但是当我尝试切换到警报时,会收到错误消息。 问题答案: API指定了将所需功能传递给构造函数。但是,

  • 问题内容: 我在将Chrome驱动程序用于Selenium时遇到问题。我已下载chromedriver,并将其保存到C:\ Chrome: 使用它给我以下错误: 任何帮助,将不胜感激。 问题答案: 您应该指定可执行文件路径,而不是包含可执行文件的目录路径。

  • 问题内容: 到目前为止,据我了解,Chrome驱动程序始终在没有任何存储的浏览器cookie的情况下启动。 我需要驱动程序从Chrome存储的所有cookie开始。 我想知道是否有任何方法可以使用已存储的cookie启动驱动程序?我在.net 4.5中使用C#。 问题答案: 是的,我们可以像调用Firefox配置文件一样通过调用保存的Chrome配置文件来做到这一点。以下是我之前做的一些步骤 在J

  • 我想在Mongo 3.2中执行聚合,如下所述,但在Java中: https://docs.mongodb.org/master/reference/operator/aggregation/lookup/#pipe._S_lookup 目前,我的java查询对象非常简单: 除了按employeId进行筛选外,我还想加入公司的此集合(其中employee.company\u id=company.i

  • 问题内容: 我正在尝试运行一个ruby文件,该文件将使用seleniumwebdriver启动chrome驱动程序。我有selenium独立服务器2.35.0。和chromedriver可执行文件已安装。我正在通过运行服务器来启动 两个会话正在启动,chrome驱动程序无法启动。 这是在我使用以下文件运行文件之后 我对此并不陌生,无法找出问题所在。而且,我也试图让它无头运行,所以我正在运行Xvfb

  • 我试图运行一个ruby文件,这将启动chrome驱动程序使用selenium WebDriver。我有selenium独立服务器2.35.0。和chromedriver可执行文件安装。我通过运行来启动服务器, 这是在我使用 我对此很陌生,不知道哪里出了问题。我也试图无头运行它,所以我有Xvfb运行。有人能帮我指出我犯的错误并启动chromedriver吗? 更新: 谁能帮我弄清楚出了什么问题吗?