Java 是否可以在Selenium网格中注册自定义webdriver?

Java 是否可以在Selenium网格中注册自定义webdriver?,java,selenium,selenium-webdriver,webdriver,selenium-grid,Java,Selenium,Selenium Webdriver,Webdriver,Selenium Grid,我通过扩展RemoteWebDriver创建了一个自定义webdriver(用于自定义浏览器)。通过简单地实例化驱动程序,我可以轻松地将其作为独立程序使用 但实际上我想在Selenium网格中使用它。是否有办法在节点上注册此自定义web驱动程序,以便我可以通过RemoteWebDriver和所需的功能使用它?我知道,我需要做什么 欢迎任何提示。提前感谢。WebDriver(服务器)变体是专门设计/创建/不断修改的,能够驱动不断发展的Web浏览器 因此,如果您想通过自定义Webdriver驱动自定

我通过扩展RemoteWebDriver创建了一个自定义webdriver(用于自定义浏览器)。通过简单地实例化驱动程序,我可以轻松地将其作为独立程序使用

但实际上我想在Selenium网格中使用它。是否有办法在节点上注册此自定义web驱动程序,以便我可以通过RemoteWebDriver和所需的功能使用它?我知道,我需要做什么


欢迎任何提示。提前感谢。

WebDriver(服务器)变体是专门设计/创建/不断修改的,能够驱动不断发展的Web浏览器

因此,如果您想通过自定义Webdriver驱动自定义浏览器,这似乎是一个完美的方法

在这一点上,问题并不清楚您的用例是否与实际不需要浏览器的情况类似

但是,根据配置,在发布任何版本之前,将对以下一组浏览器进行广泛测试:

package org.openqa.selenium.testing.drivers;

import java.util.logging.Logger;

public enum Browser {

  chrome,
  edge,
  ff,
  htmlunit,
  ie,
  none, // For those cases where you don't actually want a browser
  opera,
  operablink,
  safari;

  private static final Logger log = Logger.getLogger(Browser.class.getName());

  public static Browser detect() {
    String browserName = System.getProperty("selenium.browser");
    if (browserName == null) {
      log.info("No browser detected, returning null");
      return null;
    }

    try {
      return Browser.valueOf(browserName);
    } catch (IllegalArgumentException e) {
      log.severe("Cannot locate matching browser for: " + browserName);
      return null;
    }
  }

}
解决方案
要为您自己的自定义Webdriver自定义浏览器做准备,您可能需要在
浏览器.java
和其他所需文件中添加相关条目,这样您就可以开始了。

请按照以下说明设置对自定义浏览器类型的支持针对selenium网格运行selenium测试

  • 实现接口
    org.openqa.selenium.remote.server.DriverProvider
    (或)扩展
    org.openqa.selenium.remote.server.DefaultDriverProvider
    ,在其中您负责构建对自定义浏览器的支持
  • 在您的主资源文件夹下创建一个名为
    META-INF\services
    的目录,并确保在您从项目中创建jar时将该目录捆绑到jar中
  • 创建一个名为
    org.openqa.selenium.remote.server.DriverProvider
    的服务加载程序文件,在其中添加在步骤(1)中创建的新类的完全限定类名,并将其放置在步骤(2)中创建的目录中
  • 将项目捆绑到一个jar中
  • 现在通过添加(4)中创建的jar来启动selenium节点
  • 现在,您的新浏览器已准备好接受Selenium网格的支持

    请参考selenium用户谷歌论坛线程,其中也讨论了相同的查询,用户确认上述方法对他们有效


    在为自定义浏览器实例化
    RemoteWebDriver
    对象时,您仍然需要注意从客户端创建新的自定义功能对象。

    感谢您的回复。实际上,我有两个用例,其中一些带有自定义浏览器,另一些不需要浏览器。如果我理解你的意思是正确的,那么在不改变来源的情况下就没有机会扩展selenium,不是吗?为了得到我想要的结果,我必须使用fork Selenium并通过添加我的自定义浏览器来更改包含浏览器特定部分的文件。正当除此之外,我有点困惑,如果我没有错的话,那么您链接的Browser.java文件是用于测试Selenium本身的测试源。更改它对我的应用程序测试有何帮助?好吧,
    Browser.java
    应该是您的起点。如果你想要一个关于到底要修改什么的标准答案,你需要共享自定义Webdriver和自定义浏览器源代码,这超出了这个问题的范围。当然,这超出了范围。我只是想确定我什么都懂。感谢您的帮助。如果我的答案符合您的问题,请单击我答案旁边的空心复选标记(位于votedown箭头下方)来输入答案,使复选标记变为绿色。