我正在使用RemoteWebdriver在硒网格上初始化ChromeDriver,然后需要将RemoteWebDriver投射到ChromeDriver吗?
如果可以,我可以举个例子吗?
答案 0 :(得分:1)
ChromeDriver
是RemoteWebDriver
的扩展名。如果RemoteWebDriver
引用的实际对象是ChromeDriver
,则可以使用显式强制转换。
否则,您将无法强制转换,因为在RemoteWebDriver
下可能会使用其他扩展名(例如FirefoxDriver
也可以称为RemoteWebDriver
),这可能会违反合同{{ 1}}暗示(同样适用于纯ChromeDriver
-该对象根本不包含特定于RemoteWebDriver
的部分)。
答案 1 :(得分:1)
直到Selenium v3 ,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");
答案 2 :(得分:0)
我们不需要强制转换驱动程序,只需要初始化WebDriver变量即可处理所有不同类型的驱动程序。
WebDriver driver = null;
if (grid)
driver = new RemoteWebDriver(new URL("localhost:4444"));
else
driver = new ChromeDriver();