Исполняемый файл драйвера должен быть установлен с помощью свойства webdriver.ie.driver
Я использую 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/.
Jun 12, 2012 4:18:42 PM org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: исключение I/O (java.net.SocketException), обнаруженное при обработке запроса: программное обеспечение вызвало прерывание соединения: recv failed
12 июня 2012 г. 4:18:42 org.apache.http.impl.client.DefaultRequestDirector tryExecute
Может кто-нибудь помочь мне в этом?
Ответы
Ответ 1
-
Вам понадобится исполняемый файл драйвера InternetExplorer в вашей системе. Поэтому загрузите его из намеченного источника (http://www.seleniumhq.org/download/) распакуйте его и поместите где-нибудь, где вы его найдете. В моем примере я предположим, что вы поместите его в C:\Selenium\iexploredriver.exe
-
Затем вам нужно настроить его в системе. Вот код Java, вставленный из моего проекта Selenium:
File file = new File("C:/Selenium/iexploredriver.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
WebDriver driver = new InternetExplorerDriver();
В принципе, вы должны установить это свойство до, вы инициализируете драйвер
Ответ 2
Вы устанавливаете путь для Chrome, а не IE. В сообщении об ошибке указано
"Путь к исполняемому файлу драйвера должен быть установлен webdriver.ie.driver системное свойство;
Однако вы устанавливаете " webdriver.chrome.driver".
Вы должны установить " webdriver.ie.driver" в расположение файла при использовании InternetExplorerDriver.
Вы можете установить эти свойства в своей оболочке /MVN/IDE с помощью -DpropertyName = Value
-Dwebdriver.ie.driver="C:/.../IEDriverServer.exe"
Вам нужно использовать кавычки из-за пробелов или косых черт на вашем пути, альтернативно, обратные косые черты, другие мудрые - это escape-код.
Вы также можете использовать
System.setProperty("webdriver.ie.driver","C:/.../IEDriverServer.exe");
внутри вашего кода.
Ответ 3
Я просто помещаю файлы драйвера непосредственно в свой проект, чтобы не получить никакой зависимости от моей локальной машины.
final File file = new File("driver/chromedriver_2_22_mac");
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
driver = new ChromeDriver();
Ответ 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
Для spring:
File inputFile = new ClassPathResource("\\chrome\\chromedriver.exe").getFile();
System.setProperty("webdriver.chrome.driver",inputFile.getCanonicalPath());