55

Używam Selenium do automatyzacji testów. Moja aplikacja używa wyłącznie IE, nie będzie działać na innych przeglądarkach.Plik wykonywalny sterownika musi być ustawiony przez właściwość systemową webdriver.ie.driver

Kod:

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

I tu jest błąd otrzymuję

Ścieżka do pliku wykonywalnego kierowcy muszą być ustawione przez właściwość systemu webdriver.ie.driver; Aby uzyskać więcej informacji, zobacz https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver. Najnowszą wersję można pobrać z http://www.seleniumhq.org/download/ 12 czerwca 2012 4:18:42 org.apache.http.impl.client.DefaultRequestDirector tryExecute INFO: wyjątek we/wy (java.net.SocketException) został przechwycony podczas przetwarzania żądania: oprogramowanie spowodowało przerwanie połączenia: recv nie powiodło 12 czerwca 2012 16:18:42 org.apache.http.impl.client.DefaultRequestDirector tryExecute

Czy ktoś może mi pomóc w tej sprawie?

+1

Nie wiem, dlaczego nie mogę wysłać odpowiedzi na to pytanie, ale można również obejść ten problem, określając lokalizację folderu w ramach wartości środowiska PATH na danym komputerze. Jest to przydatne, jeśli chcesz lub musisz mieć pliki przechowywane w różnych miejscach na różnych komputerach w różnych środowiskach. – MorkPork

+0

Wymień linię System.setProperty ("webdriver.chrome.driver", "C: \\ Users \\ vthaduri \\ obszar roboczy \\ LDCSuite \\ IEDriverServer.exe "); autor: System.setProperty ("webdriver.ie.driver", "C: \\ Users \\ vthaduri \\ workspace \\ LDCSuite \\ IEDriverServer.exe"); –

+0

Ustawiono właściwość chrome zamiast IE. to tylko problem. –

Odpowiedz

68
  1. Musisz InternetExplorer wykonywalny sterownika w systemie. Więc pobierz go z podanego źródła (http://www.seleniumhq.org/download/) rozpakuj i umieść gdzieś, gdzie możesz go znaleźć. W moim przykładzie założę, że umieścisz go pod adresem C:\Selenium\iexploredriver.exe

  2. Następnie musisz go skonfigurować w systemie.Oto kod Java wklejony z mojego projektu Selen:

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

Zasadniczo trzeba ustawić tę właściwość przed zainicjować kierowcy

+0

Notatka poboczna - używam Chrome, więc kod prawdopodobnie będzie wymagał wprowadzenia pewnych poprawek. Zwłaszcza część init IE –

+0

Dodałem już kod do mojego programu. Popatrz na mój kod w pytaniu. Ale nie jestem pewien, jak pozbyć się System.setProperty ("webdriver.chrome.driver", "C: \\ Users \\ vthaduri \\ workspace \\ LDCSuite \\ IEDriverServer.exe"); WebDriver oWebDriver = new InternetExplorerDriver(); – vkrams

+1

po prostu zamień 'webdriver.chrome.driver' na' webdriver.ie.driver' i powinno działać –

13

Ustawiasz ścieżkę do przeglądarki Chrome, a nie IE. Komunikat o błędzie mówi

„Ścieżka do pliku wykonywalnego kierowcy muszą być ustawione przez właściwość systemu webdriver.ie.driver;”

Jednak ustawiasz "webdriver.chrome.driver".

Musisz ustawić "webdriver.ie.driver" na położenie pliku podczas używania InternetExplorerDriver.

Można ustawić te właściwości w swojej skorupie/MVN/IDE z -DpropertyName = wartość

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

trzeba użyć cytaty z powodu spacji lub ukośniki na swojej drodze, ewentualnie odwrócić ukośniki innych mądrych oni są prefiksem ucieczki.

Można również użyć

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

wewnątrz kodu.

+1

Tak, to jest złe. Napisałeś kod jako: System.setProperty ("webdriver.chrome.driver", "C: \\ Users \\ vthaduri \\ workspace \\ LDCSuite \\ IEDriverServer.exe"); Użyj "webdriver.chrome.driver" zamiast "webdriver.chrome.driver" –

0

Trzeba będzie musiał pobrać InternetExplorer sterownika wykonywalnych na system, pobierz go ze źródła (http://code.google.com/p/selenium/downloads/list) po pobraniu rozpakuj go i umieść gdzieś w komputerze. W moim przykładzie będę umieścić go na D: \ iexploredriver.exe

Następnie trzeba pisać poniższego kodu w Eclipse głównej klasy

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

Na wiosnę:

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

ja po prostu umieścić pliki sterownika bezpośrednio do mojego projektu, aby nie uzyskać zależności od mojego komputera lokalnego.

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

driver = new ChromeDriver(); 
Powiązane problemy