【问题标题】:Driver executable must be set by the webdriver.ie.driver system property驱动程序可执行文件必须由 webdriver.ie.driver 系统属性设置
【发布时间】:2012-06-15 06:08:29
【问题描述】:

我正在使用 Selenium 来自动化测试。我的应用程序只使用 IE,它不能在其他浏览器上运行。

代码:

import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class Test {
    public static void main(String[] args) {
        final String sUrl = "http://www.google.co.in/";                             
        System.setProperty("webdriver.chrome.driver","C:\\Users\\vthaduri\\workspace\\LDCSuite\\IEDriverServer.exe");
        WebDriver oWebDriver = new InternetExplorerDriver();
        oWebDriver.get(sUrl);
        WebElement oSearchInputElem = oWebDriver.findElement(By.name("q")); // Use name locator to identify the search input field.
        oSearchInputElem.sendKeys("Selenium 2");
        WebElement oGoogleSearchBtn = oWebDriver.findElement(By.xpath("//input[@name='btnG']"));  
        oGoogleSearchBtn.click();

        try {
            Thread.sleep(5000);
        } catch(InterruptedException ex) {
            System.out.println(ex.getMessage());
        }
        oWebDriver.close();
    }    
}

这是我遇到的错误

驱动程序可执行文件的路径必须由 webdriver.ie.driver 系统属性设置;有关详细信息,请参阅https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver。最新版本可从http://www.seleniumhq.org/download/下载 2012 年 6 月 12 日下午 4:18:42 org.apache.http.impl.client.DefaultRequestDirector tryExecute 信息:处理请求时捕获 I/O 异常 (java.net.SocketException):软件导致连接中止:recv 失败 2012 年 6 月 12 日下午 4:18:42 org.apache.http.impl.client.DefaultRequestDirector 尝试执行

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 不知道为什么我不能为此发布答案,但您也可以通过在相关机器上的 PATH Environment 值中指定文件夹位置来解决此问题。如果您希望或必须将文件存储在不同环境中不同机器上的不同位置,这很方便
  • 替换行 System.setProperty("webdriver.chrome.driver","C:\\Users\\vthaduri\\workspace\\LDCSuite\\IEDriverServer.exe");通过 System.setProperty("webdriver.ie.driver","C:\\Users\\vthaduri\\workspace\\LDCSuite\\IEDriverServer.exe");
  • 您已经为 chrome 而不是 IE 设置了属性。这只是问题

标签: java internet-explorer selenium-webdriver webdriver system-properties


【解决方案1】:

错误信息说

"驱动程序可执行文件的路径必须由 webdriver.ie.driver 系统属性;"

您正在使用“webdriver.chrome.driver”属性设置 Chrome 驱动程序的路径。您没有为 InternetExplorerDriver 设置文件位置,为此您必须设置“webdriver.ie.driver”属性。

您可以在 shell、maven 或 IDE 中使用 -DpropertyName=Value 设置这些属性

-Dwebdriver.ie.driver="C:/.../IEDriverServer.exe" 

由于 Windows 机器上路径中的空格或斜杠,您需要使用引号,或者反转斜杠,否则它们是字符串字符串转义前缀。

你也可以使用

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

在您的代码中。

【讨论】:

  • 是的,这是错误的。您已将代码编写为: System.setProperty("webdriver.chrome.driver","C:\\Users\\vthaduri\\workspace\\LDCSuite\\IEDriverServer.exe");请使用“webdriver.chrome.driver”而不是“webdriver.chrome.driver”
【解决方案2】:

我只是将驱动程序文件直接放入我的项目中,而不会对我的本地机器产生任何依赖。

final File file = new File("driver/chromedriver_2_22_mac");
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());

driver = new ChromeDriver();

【讨论】:

    【解决方案3】:
    1. 您需要在您的系统上执行 InternetExplorer 驱动程序。所以从提示的源 (http://www.seleniumhq.org/download/) 下载它,解压它并放在你能找到的地方。在我的示例中,我假设您将其放置到 C:\Selenium\iexploredriver.exe

    2. 然后你必须在系统中设置它。这是从我的 Selenium 项目中粘贴的 Java 代码:

      File file = new File("C:/Selenium/iexploredriver.exe");
      System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
      WebDriver driver = new InternetExplorerDriver();
      

    基本上,您必须在初始化驱动程序之前设置此属性

    【讨论】:

    • 旁注 - 我使用的是 Chrome,因此代码可能需要对其进行一些调整。尤其是IE的init部分
    • 我已经在我的程序中添加了代码。看看我在问题中的代码。但我不知道如何摆脱 System.setProperty("webdriver.chrome.driver","C:\\Users\\vthaduri\\workspace\\LDCSuite\\IEDriverServer.exe"); WebDriver oWebDriver = new InternetExplorerDriver();
    • 只需将 webdriver.chrome.driver 替换为 webdriver.ie.driver 就可以了
    • 我的代码:文件 file = new File("F:\\SoftwareDownload_Ripon\\WebDriver\\IEDriverServer_Win32_2.24.2\\IEDriverServer.exe"); System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); WebDriver driver = new InternetExplorerDriver();它可以工作,但错误是:INFO:处理请求时捕获 I/O 异常(org.apache.http.NoHttpResponseException):目标服务器未能响应 org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了。解决问题的方法是什么?
    • Ripon - 也许再写一个问题。很难从评论中看出你想要做什么
    【解决方案4】:

    您需要在您的系统上下载 InternetExplorer 驱动程序可执行文件,下载后从源 (http://code.google.com/p/selenium/downloads/list) 下载,解压缩并放在您计算机的某个位置。在我的示例中,我将其放置到 D:\iexploredriver.exe

    然后你已经在你的 Eclipse 主类中编写了下面的代码

       System.setProperty("webdriver.ie.driver", "D:/iexploredriver.exe");
       WebDriver driver = new InternetExplorerDriver();
    

    【讨论】:

      【解决方案5】:

      春天:

      File inputFile = new ClassPathResource("\\chrome\\chromedriver.exe").getFile();
      System.setProperty("webdriver.chrome.driver",inputFile.getCanonicalPath());
      

      【讨论】:

        猜你喜欢
        • 2017-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 2018-03-17
        • 2017-12-21
        • 2016-11-04
        • 2020-11-27
        相关资源
        最近更新 更多