【问题标题】:Can we cast RemoteWebDriver to ChromeDriver?我们可以将 RemoteWebDriver 转换为 ChromeDriver 吗?
【发布时间】:2020-06-23 11:31:03
【问题描述】:

我正在使用 RemoteWebdriver 在 selenium 网格上初始化 ChromeDriver,然后我需要将 RemoteWebDriver 转换为 ChromeDriver?

如果可以,可以举个例子吗?

【问题讨论】:

    标签: selenium google-chrome selenium-chromedriver selenium-grid remotewebdriver


    【解决方案1】:

    ChromeDriverRemoteWebDriver 的扩展。如果RemoteWebDriver 引用的实际对象是ChromeDriver,则可以使用显式转换。

    否则,您将无法投射,因为在RemoteWebDriver 下可能会出现一些其他扩展名(例如FirefoxDriver 也可以称为RemoteWebDriver),这可能不遵守合同ChromeDriver 暗示(同样是适用于纯 RemoteWebDriver - 对象根本不包含特定于 ChromeDriver 的部分。

    【讨论】:

    • 您能否提供带有 RemoteWebDriver 的开发工具的工作示例?
    【解决方案2】:

    直到Selenium v3ChromeDriver 扩展了 RemoteDriver。这个 ChromeDriver 是一个 WebDriver 实现,它控制在本地机器上运行的 浏览器。

    不过, 推出了新的设计/功能,

    • 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");
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-07-22
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 2019-01-03
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多