Java 是否可以在Selenium网格中注册自定义webdriver?
我通过扩展RemoteWebDriver创建了一个自定义webdriver(用于自定义浏览器)。通过简单地实例化驱动程序,我可以轻松地将其作为独立程序使用 但实际上我想在Selenium网格中使用它。是否有办法在节点上注册此自定义web驱动程序,以便我可以通过RemoteWebDriver和所需的功能使用它?我知道,我需要做什么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驱动自定
欢迎任何提示。提前感谢。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)中创建的目录中在为自定义浏览器实例化
RemoteWebDriver
对象时,您仍然需要注意从客户端创建新的自定义功能对象。感谢您的回复。实际上,我有两个用例,其中一些带有自定义浏览器,另一些不需要浏览器。如果我理解你的意思是正确的,那么在不改变来源的情况下就没有机会扩展selenium,不是吗?为了得到我想要的结果,我必须使用fork Selenium并通过添加我的自定义浏览器来更改包含浏览器特定部分的文件。正当除此之外,我有点困惑,如果我没有错的话,那么您链接的Browser.java文件是用于测试Selenium本身的测试源。更改它对我的应用程序测试有何帮助?好吧,Browser.java
应该是您的起点。如果你想要一个关于到底要修改什么的标准答案,你需要共享自定义Webdriver和自定义浏览器源代码,这超出了这个问题的范围。当然,这超出了范围。我只是想确定我什么都懂。感谢您的帮助。如果我的答案符合您的问题,请单击我答案旁边的空心复选标记(位于votedown箭头下方)来输入答案,使复选标记变为绿色。