我们可以将RemoteWebDriver转换为ChromeDriver吗?

9w11ddsr  于 2023-08-01  发布在  Go
关注(0)|答案(4)|浏览(220)

我正在使用RemoteWebdriver在selenium网格上初始化ChromeDriver,那么我需要将RemoteWebdriver转换为ChromeDriver?
如果可能的话,我能举个例子吗?

v09wglhw

v09wglhw1#

ChromeDriverRemoteWebDriver得扩展.如果RemoteWebDriver引用的实际对象是ChromeDriver,则可以使用显式强制转换。
否则,您将无法强制转换,因为在RemoteWebDriver下,某些其他扩展可能会取代它(例如,FirefoxDriver也可以称为RemoteWebDriver),而这些扩展可能不符合ChromeDriver所暗示的约定(这同样适用于纯RemoteWebDriver-对象只是不包含ChromeDriver特定的部分)。

7fyelxc5

7fyelxc52#

直到Seleniumv3,ChromeDriver扩展了RemoteDriver。这个 ChromeDriver 是一个WebDriver实现,控制在本地机器上运行的google-chrome浏览器。
然而,selenium4释放了一个新的设计/功能,

  • ChomeDriver 扩展为 ChromiumDriver
  • ChromiumDriver 扩展 RemoteDriver

作为拦截 * 网络 * 的示例,您可以执行以下操作:

System.setProperty("webdriver.chrome.driver","C:\\WebDrivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
ChromeDriver driver = new ChromeDriver(options);
DevTools devTool = driver.getDevTools();
devTool.createSession();
devTool.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
devTool.send(Network.setBlockedURLs(ImmutableList.of("*.jpg", "*.jpeg", "*.png", "*.css")));
driver.get("https://amazon.in/b?node=1375424031");

字符串

a6b3iqyw

a6b3iqyw3#

我们不需要转换驱动程序,我们只需要初始化WebDriver变量,它可以处理所有不同类型的驱动程序。

WebDriver driver = null;
if (grid)
    driver = new RemoteWebDriver(new URL("localhost:4444"));
else
    driver = new ChromeDriver();

字符串

ua4mk5z4

ua4mk5z44#

您必须使用Augmenter机制来执行示例DevTools

相关问题