我收到了错误:
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 3.x
绑定使用geckodriver
,Mozilla Firefox Browser
和Selenium-Java
时,我们需要通过Test Environment
线配置System.setProperty
。查找详细信息以及下面的答案。
你的问题有两部分,所以我将分两部分回答:
System.setProperty("webdriver.gecko.driver","<path to geckodriver.exe>");
WebDriver driver = new FirefoxDriver();
Yes
每当我们需要执行一个程序(基于Selenium-Java)时,我们必须明确提到我们尝试在gecko
形式的程序中使用的驱动程序类型(chrome
,ie
,"webdriver.gecko.driver"
)。除此之外,我们还需要以gecko
的形式明确提到驱动器(chrome
,ie
,.exe
)二进制("<path to geckodriver.exe>"
)的绝对路径。接下来我们使用WebDriver
接口并将WebDriver
实例转换为FirefoxDriver
。
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();
}
}
您需要使用gecko驱动程序的原因是您的Firefox版本大于v47。因此,要回答您的问题,如果您不想每次都使用gecko驱动程序,则需要将Firefox版本降级到47或更低版本。
以前的版本可以在这里找到:
是的,如果你想使用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);