我正在使用RemoteWebdriver在selenium网格上初始化ChromeDriver,那么我需要将RemoteWebdriver转换为ChromeDriver?如果可能的话,我能举个例子吗?
v09wglhw1#
ChromeDriver是RemoteWebDriver得扩展.如果RemoteWebDriver引用的实际对象是ChromeDriver,则可以使用显式强制转换。否则,您将无法强制转换,因为在RemoteWebDriver下,某些其他扩展可能会取代它(例如,FirefoxDriver也可以称为RemoteWebDriver),而这些扩展可能不符合ChromeDriver所暗示的约定(这同样适用于纯RemoteWebDriver-对象只是不包含ChromeDriver特定的部分)。
ChromeDriver
RemoteWebDriver
FirefoxDriver
7fyelxc52#
直到Seleniumv3,ChromeDriver扩展了RemoteDriver。这个 ChromeDriver 是一个WebDriver实现,控制在本地机器上运行的google-chrome浏览器。然而,selenium4释放了一个新的设计/功能,
作为拦截 * 网络 * 的示例,您可以执行以下操作:
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");
字符串
a6b3iqyw3#
我们不需要转换驱动程序,我们只需要初始化WebDriver变量,它可以处理所有不同类型的驱动程序。
WebDriver driver = null; if (grid) driver = new RemoteWebDriver(new URL("localhost:4444")); else driver = new ChromeDriver();
ua4mk5z44#
您必须使用Augmenter机制来执行示例DevTools
4条答案
按热度按时间v09wglhw1#
ChromeDriver
是RemoteWebDriver
得扩展.如果RemoteWebDriver
引用的实际对象是ChromeDriver
,则可以使用显式强制转换。否则,您将无法强制转换,因为在
RemoteWebDriver
下,某些其他扩展可能会取代它(例如,FirefoxDriver
也可以称为RemoteWebDriver
),而这些扩展可能不符合ChromeDriver
所暗示的约定(这同样适用于纯RemoteWebDriver
-对象只是不包含ChromeDriver
特定的部分)。7fyelxc52#
直到Seleniumv3,ChromeDriver扩展了RemoteDriver。这个 ChromeDriver 是一个WebDriver实现,控制在本地机器上运行的google-chrome浏览器。
然而,selenium4释放了一个新的设计/功能,
作为拦截 * 网络 * 的示例,您可以执行以下操作:
字符串
a6b3iqyw3#
我们不需要转换驱动程序,我们只需要初始化WebDriver变量,它可以处理所有不同类型的驱动程序。
字符串
ua4mk5z44#
您必须使用Augmenter机制来执行示例DevTools