使用Java的Selenium驱动程序插件

问题描述 投票:-3回答:3

我收到了错误:

The path to driver executable must be set by the webdriver.gecko.driver system property

然后我下载了geckodriver并设置如下路径。之后代码工作正常。

但我的问题是,当我想使用selenium代码启动firefox时,我是否每次都需要使用以下代码(在每个程序中)?

System.setProperty("webdriver.gecko.driver","<path to geckodriver.exe>");
WebDriver driver = new FirefoxDriver(); 
selenium selenium-webdriver
3个回答
2
投票

当我们通过Selenium 3.x绑定使用geckodriverMozilla Firefox BrowserSelenium-Java时,我们需要通过Test Environment线配置System.setProperty。查找详细信息以及下面的答案。

你的问题有两部分,所以我将分两部分回答:


1.我是否每次都需要在每个程序中使用以下代码:

System.setProperty("webdriver.gecko.driver","<path to geckodriver.exe>");
WebDriver driver = new FirefoxDriver(); 

回答:

Yes

阐释:

每当我们需要执行一个程序(基于Selenium-Java)时,我们必须明确提到我们尝试在gecko形式的程序中使用的驱动程序类型(chromeie"webdriver.gecko.driver")。除此之外,我们还需要以gecko的形式明确提到驱动器(chromeie.exe)二进制("<path to geckodriver.exe>")的绝对路径。接下来我们使用WebDriver接口并将WebDriver实例转换为FirefoxDriver


2.每次我要启动Firefox时,是否需要使用以下代码:

System.setProperty("webdriver.gecko.driver","<path to geckodriver.exe>");

回答:

No

阐释:

一旦我们通过WebDriver类配置driver实例,即DesiredCapabilities,驱动程序就能够执行相同的配置,直到它的生命周期通过自动化脚本进行控制。因此,除非我们通过驱动程序显式调用quit()方法,否则驱动程序实例将保持活动状态并进行配置。因此,在您的程序中,无论您选择通过调用close()方法关闭浏览器实例多少次,您总是可以提及driver = new FirefoxDriver();一次又一次地使用driver中存储的配置打开一个新的浏览器会话。

一个例子:

package demo;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Driver_Close_Initiate 
{
    static WebDriver driver;

    public static void main(String[] args) 
    {
        System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
        DesiredCapabilities dc = DesiredCapabilities.firefox();
        dc.setCapability("marionette", true);
        driver =  new FirefoxDriver(dc);
        driver.get("https://google.com");
        driver.close();
        driver =  new FirefoxDriver(dc);
        driver.get("https://facebook.com");
        driver.quit();
    }
}

0
投票

您需要使用gecko驱动程序的原因是您的Firefox版本大于v47。因此,要回答您的问题,如果您不想每次都使用gecko驱动程序,则需要将Firefox版本降级到47或更低版​​本。

以前的版本可以在这里找到:

https://ftp.mozilla.org/pub/firefox/releases/


0
投票

是的,如果你想使用47以上的Firefox版本和3.0以上的selenium jar,你必须每次都使用setProperty(String key,String path)。

System.setProperty("webdriver.gecko.driver", "Path of geckodriver.exe");

或者,您可以使用DesiredCapabilities类设置配置路径

DesiredCapabilities des_capablity = DesiredCapabilities.firefox();
des_capablity.setCapability("marionette", true);
driver =  new FirefoxDriver(des_capablity);
© www.soinside.com 2019 - 2024. All rights reserved.