【问题标题】:What is the exact meaning of webdriver.chrome.driver and where this system property is located?webdriver.chrome.driver 的确切含义是什么,这个系统属性在哪里?
【发布时间】:2019-04-01 06:52:09
【问题描述】:

当我们使用 selenium 启动网络浏览器时,我们必须设置系统属性。

我想知道webdriver.ie.driver,webdriver.chrome.driver是什么意思,这个keyvalue在哪里

我在初始化之前已经设置好了路径

System.setProperty("webdriver.ie.driver", "C:\\driver\\IEDriverServer.exe");

WebDriver driver = new InternetExplorerDriver();

我只想知道Webdriver.ie.driver是什么意思?

【问题讨论】:

标签: java selenium selenium-webdriver automated-tests


【解决方案1】:

Selenium 代码通过 JSON 线协议InternetExplorerDriver 交互,然后 InterenteExplorerDriver 将进一步与 Internet Explorer 浏览器通信。所以基本上,IE 驱动程序将充当 selenium 代码和 IE 浏览器之间的桥梁。

System.setProperty 位于您的system classsetProperty 是静态字符串方法,您可以在其中存储基于键值对的值。

System.setProperty(“propertyName”, “value”)”正是它所说的。也就是说,它将系统属性“propertyName”设置为具有值“value”。

在 Selenium 中,您使用此方法是因为浏览器没有内置可执行文件来运行自动化代码,因此您需要 Chrome/IE/Gecko(根据要求)驱动服务器来与您的通信Selenium 代码到浏览器。

简单来说,要为各个浏览器设置驱动程序的路径,您需要system.setProperty。例如。

System.setProperty("webdriver.ie.driver", "Path of your Driver");

WebDriver driver = new InternetExplorerDriver();

driver.get("http://seleniumhq.com");

这将使用 Internet Explorer 驱动程序在 Internet Explorer 中启动 selenium 官方站点,其中驱动程序的初始化由 system.setproperty 方法处理。

这必须是在任何测试方法初始化驱动程序之前需要在 selenium 脚本中执行的第一行代码。

【讨论】:

【解决方案2】:

为什么我们在脚本中使用WebDriver driver = new FirefoxDriver(),见下文

以下是基于上图的几点。

-SearchContext是selenium中最超级的接口,由另一个叫WebDriver的接口扩展而来。

-SearchContext和WebDriver接口的所有抽象方法都在RemoteWebDriver类中实现。

-所有浏览器相关的类如FirefoxDriver、ChromeDriver等,都扩展了RemoteWebdriver类。

什么是 WebDriver?

WebDriver 是 Selenium WebDriver 提供的一个接口。众所周知,Java 中的接口是常量和抽象方法(没有任何实现的方法)的集合。 WebDriver 接口充当每个浏览器特定实现(如 ChromeDriver、FireFoxDriver)必须遵循的契约。 WebDriver 接口声明了 get()、navigate()、close()、sendKeys() 等方法,并且浏览器特定驱动程序的开发人员实现了这些方法以使这些东西自动化。 以 ChromeDriver 为例,它是由 Chromium 团队的人开发的,Selenium 项目的开发人员不必担心这些驱动程序的实现细节。

WebDriver driver = new FirefoxDriver();

拥有 WebDriver 类型的引用变量允许我们将驱动程序对象分配给不同的浏览器特定驱动程序。因此,通过将驱动程序对象分配给任何所需的浏览器来允许多浏览器测试。

欲了解更多信息,请查看以下链接:-

WebDriver driver = new FirefoxDriver() – Why we write in Selenium Scripts

How does it work?

在 Selenium 中,WebDriver 是一个接口。

FirefoxDriver 是一个类。它实现了WebDriver接口的所有方法。

【讨论】:

    【解决方案3】:

    当我们在java中启动用于硒自动化的ie浏览器时,我们编写以下代码行

    System.setProperty("webdriver.ie.driver", "C:\\driver\\IEDriverServer.exe");
    
    WebDriver driver = new InternetExplorerDriver();
    

    现在让我们看看这个更详细:

    1. System.setProperty():在链接system.setProperty() 中已经讨论过了。 java中的系统有一个称为props的静态成员变量,它的类型是Properties。它是一个由键值对组成的哈希表。

    当 java 启动一个程序时。 JVM 实例启动,它有自己的 System.propties() 哈希表。

    当我们写作时

    System.setProperty("webdriver.ie.driver", "C:\\driver\\IEDriverServer.exe");
    

    我们正在创建一个键值对,键是webdriver.ie.driver,值是它的 路径。

    1. new InternetExplorerDriver();

    根据chrome driver的selenium java代码

    默认构造函数接受服务参数。这些服务是我们正在启动的浏览器驱动程序的路径

    【讨论】:

      【解决方案4】:

      ChromeDriver 是 WebDriver 用来控制 Chrome 的单独可执行文件。它由 Chromium 团队在 WebDriver 贡献者的帮助下维护。如果您不熟悉 WebDriver,请: 按照以下步骤设置测试以使用 ChromeDriver 运行:

      确保 Chromium/Google Chrome 安装在可识别的位置 ChromeDriver 希望您将 Chrome 安装在您平台的默认位置。您还可以通过设置特殊功能来强制 ChromeDriver 使用自定义位置。 在本网站的下载部分下载适用于您平台的 ChromeDriver 二进制文件 帮助 WebDriver 找到下载的 ChromeDriver 可执行文件 这些步骤中的任何一个都应该可以解决问题: 在 PATH 环境变量中包含 ChromeDriver 位置 (仅限 Java)通过 webdriver.chrome.driver 系统属性指定其位置(参见下面的示例) (仅限 Python)在实例化 webdriver.Chrome 时包含 ChromeDriver 的路径(参见下面的示例) http://chromedriver.chromium.org/getting-started

      以下是 selenium 包中的引用,其中将使用该值。

      /**
      * System property that defines the location of the chromedriver executable that will be used by
      * the {@link #createDefaultService() default service}.
      */
      public static final String CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-14
        • 1970-01-01
        • 2014-07-12
        • 2015-02-21
        • 2011-05-06
        • 2013-07-22
        相关资源
        最近更新 更多