Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java的Selenium驱动程序插件_Selenium_Selenium Webdriver - Fatal编程技术网

使用Java的Selenium驱动程序插件

使用Java的Selenium驱动程序插件,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我得到了一个错误: The path to driver executable must be set by the webdriver.gecko.driver system property 然后我下载了geckodriver并设置了如下路径。之后,代码就可以正常工作了 但我的问题是,当我想使用selenium代码启动firefox时,是否每次(在每个程序中)都需要使用下面的代码 System.setProperty("webdriver.gecko.driver","<path t

我得到了一个错误:

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(); 
System.setProperty(“webdriver.gecko.driver”,”);
WebDriver=newfirefoxdriver();

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

可以在此处找到以前的版本:

当我们使用Selenium 3.x时,
geckodriver
Mozilla Firefox浏览器
通过
Selenium Java
绑定我们需要通过
系统.setProperty
行配置
测试环境。在下面找到详细信息以及您的答案

你的问题分为两部分,因此我将分两部分回答:


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

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

例如:
是的,如果要使用47以上版本的Firefox和3.0以上版本的selenium JAR,每次都必须使用setProperty(字符串键、字符串路径)

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

是的,每次程序运行时都必须执行该代码。你有没有试过在没有人的情况下运行它?您可以使用命令行选项“-Dproperty=value”设置此属性。java-Dwebdriver.gecko.driver=“path”SomeClass。然后它将可用于JVM中的类,而无需在代码中编写这一行。您可以像eclipse一样轻松地在IDE中设置变量。
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();
    }
}
System.setProperty("webdriver.gecko.driver", "Path of geckodriver.exe");
DesiredCapabilities des_capablity = DesiredCapabilities.firefox();
des_capablity.setCapability("marionette", true);
driver =  new FirefoxDriver(des_capablity);