2011-09-16 13 views
17

Więc przeczytałem wszystkie dokumenty o dodaniu chromedriver do mojej ścieżki i śledziłem ich wszystkich. Jestem na komputerze Mac z selenium2, Maven, Eclipse, a wszystkie najnowsze sterowniki:Sterownik Chrome selenu 2

Error: 
The path to the chromedriver executable must be set by the webdriver.chrome.driver system property; 

kładę chromedriver w moim folderze Aplikacje i moja ścieżka wygląda następująco:

echo $PATH 
/Users/tcerrato/selenium/BS_Sel_Project/auto_helper/test_scripts:/usr/local/apache-maven-2.2.1//bin:/Users/oracle/oracle/product/10.2.0/db_1/bin:/opt/local/bin:/opt/local/sbin:/Applications: 

Co mi brakuje? Nie mogę w ogóle używać sterownika chrome. Każda pomoc byłaby świetna Próbuję teraz losowych rzeczy.

Oto moja sekcja pom na selenu:

<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium</artifactId> 
    <version>2.0rc2</version> 
    <type>pom</type> 
</dependency> 
<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-chrome-driver</artifactId> 
    <version>2.5.0</version> 
</dependency> 
<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-firefox-driver</artifactId> 
    <version>2.6.0</version> 
</dependency> 

Odpowiedz

20

nie jestem pewien o Maven ale jak ustawić właściwość webdriver.chrome.driver

System.setProperty("webdriver.chrome.driver", "C:\\pathto\\my\\chromedriver.exe"); 
WebDriver driver = new ChromeDriver(); 
driver.get("http://www.google.com"); 
+1

który działał. nic, o czym czytałem nawet zdalnie, sprawiało, że było to prawie łatwe :) dzięki – ducati1212

+2

Jak to zrobić w pythonie? –

+1

@GregGauthier Zgodnie ze stroną [chrome start "start"] możesz po prostu podać ścieżkę jako argument (opcjonalny) podczas tworzenia webdrivera: 'driver = webdriver.Chrome ('/ path/to/chromedriver')' – zpea

0

Spróbuj tego:

System.setProperty("webdriver.chrome.driver","/location to/chromedriver folder"); 
WebDriver driver = new ChromeDriver(); 
driver.get("your.app"); 
9

Ustawienie właściwości systemu przez maven można wykonać za pomocą następujących elementów (i przetestowanych):

  1. Dodaj systemPropertyVariables konfigurację do maven-surefire-plugin w pom.xml. Jest to (zazwyczaj), ponieważ surefire jest wywoływaczem dla testów i gdzie zostaną ustawione właściwości systemowe.

    <plugin> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.7.1</version> 
        <configuration> 
         <systemPropertyVariables> 
          <webdriver.chrome.driver>${webdriver.chrome}</webdriver.chrome.driver> 
         </systemPropertyVariables> 
        </configuration> 
    </plugin> 
    
  2. Teraz określić ${webdriver.chrome} gdzieś. Dobrym początkiem jest sekcja <properties> w pom.xml

    <properties> 
        <webdriver.chrome>/home/gede/bin/chromedriver</webdriver.chrome> 
    </properties> 
    

Potencjalnie może to być zrobione lepiej poprzez wykorzystanie <profiles> jak w Simon Martinelli na example

0
System.setproperty("webdriver.chrome.driver","your file path here with chromedriver.exe"); 
webDriver driver=new chromeDriver(); 
driver.get("http://google.com"); 
2

Więc w pom trzeba ustaw to tak:

    <dependency> 
        <groupId>org.seleniumhq.selenium</groupId> 
        <artifactId>selenium-chrome-driver</artifactId> 
        <version>2.34.0</version> 
        </dependency> 

To jest kod Java uruchamiający Chrome za pomocą selenu

Aby uruchomić Chrome, musisz pobrać sterownik Chrome tutaj. https://code.google.com/p/chromedriver/downloads/list

Po wykonaniu tej czynności należy ustawić ją w zmiennej środowiskowej.Przeczytaj ten https://code.google.com/p/selenium/wiki/ChromeDriver

Dzięki,

 Mediha 
+1

Dlaczego więc w ogóle korzystać z zależności Maven? –

4

Można mieć go przy użyciu sterownika binarny downloader Maven plugin do pobierania plików binarnych sterowników dla Ciebie (https://github.com/Ardesco/selenium-standalone-server-plugin):

   <plugin> 
        <groupId>com.lazerycode.selenium</groupId> 
        <artifactId>driver-binary-downloader-maven-plugin</artifactId> 
        <version>1.0.7</version> 
        <configuration> 
         <rootStandaloneServerDirectory>${project.basedir}/src/test/resources/selenium_standalone_binaries</rootStandaloneServerDirectory> 
         <downloadedZipFileDirectory>${project.basedir}/src/test/resources/selenium_standalone_zips</downloadedZipFileDirectory>        
        </configuration> 
        <executions> 
         <execution> 
          <goals> 
           <goal>selenium</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 

Spowoduje to pobranie pliki binarne i ustaw właściwość maven, której można użyć w konfiguracji surefire/failsafe w następujący sposób:

   <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-failsafe-plugin</artifactId> 
        <version>2.7.2</version> 
        <configuration>        
         <systemProperties>        
          <!--Set properties passed in by the driver binary downloader--> 
          <phantomjs.binary.path>${phantomjs.binary.path}</phantomjs.binary.path> 
          <webdriver.chrome.driver>${webdriver.chrome.driver}</webdriver.chrome.driver> 
          <webdriver.ie.driver>${webdriver.ie.driver}</webdriver.ie.driver> 
          <webdriver.opera.driver>${webdriver.opera.driver}</webdriver.opera.driver> 
         </systemProperties> 
         <includes> 
          <include>**/*WebDriver.java</include> 
         </includes> 
        </configuration> 
        <executions> 
         <execution> 
          <goals> 
           <goal>integration-test</goal> 
           <goal>verify</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 

Gdy tworzysz nowy obiekt sterownika, właściwość systemu wskazująca lokalizację binarną sterownika zostanie teraz ustawiona i będzie działać.

26

Dodaj tę zależność do projektu:

<dependency> 
    <groupId>io.github.bonigarcia</groupId> 
    <artifactId>webdrivermanager</artifactId> 
    <version>2.1.0</version> 
</dependency> 

Biblioteka ta pobierze najnowszą wersję binarną WebDriver trzeba i wyeksportować zmienną właściwego systemu Java (webdriver.chrome.driver, webdriver.gecko.driver, webdriver.opera.driver, phantomjs.binary.path, webdriver.edge.driver, webdriver.ie.driver) , po prostu przy użyciu jednej z następujących zdań odpowiednio:

WebDriverManager.chromedriver().setup(); 
WebDriverManager.firefoxdriver().setup(); 
WebDriverManager.operadriver().setup(); 
WebDriverManager.phantomjs().setup(); 
WebDriverManager.edgedriver().setup(); 
WebDriverManager.iedriver().setup(); 

Więcej informacji na https://github.com/bonigarcia/webdrivermanager

+0

Próbowałem używać twojej wtyczki, ale podczas pobierania odpowiedniego pliku binarnego wydaje się, że jbehave zawsze próbuje użyć sterownika firefix, nawet jeśli używasz klasy systemowej opartej na właściwościach org.jbehave.web.selenium.PropertyWebDriverProvider – berimbolo

+0

Ok Jbehave wymaga ustawienia dodatkowej właściwości systemu: System.setProperty ("browser", "chrome"); Byłoby miło, gdyby twoja konfiguracja pozwoliła ci określić, że chcesz używać Jbehave, a następnie ustawić dodatkową własność w twoim imieniu, ale działa to dobrze, jeśli sam ją ustawię. Dzięki – berimbolo

0

Po prostu dodaj WebDriverManagera do swojego urządzenia i działa bez ręcznej konfiguracji, jeśli masz konfigurację przeglądarki w domyślnej konfiguracji.

0

To działa dla mnie bez ustawienia właściwości webdriver.chrome.driver. Po prostu dodając chromedriver do PATH

> echo $PATH 
/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin 
>  
> which chromedriver 
/usr/local/bin/chromedriver 

Jeśli używasz Homebrew, instalowanie chromedriver wraz z dodawaniem do PATH można zrobić tak proste, jak to:

brew install chromedriver 

Przydatne linki:

https://sites.google.com/a/chromium.org/chromedriver/

http://brewformulas.org/Chromedriver

-1
Pom.xml code and Selenium code below: 


    <groupId>com.HelloWorld</groupId> 
    <artifactId>t</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>t</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 




    <webdriver.chrome>/home/gede/bin/chromedriver</webdriver.chrome> 

    </properties> 

    <build> 
    <resources> 
     <resource> 
      <directory>src/main/java/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
     </resources> 
     <plugins> 

     <plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.7.1</version> 
     <configuration> 
     <systemPropertyVariables> 
      <webdriver.chrome.driver>${webdriver.chrome} 
     </webdriver.chrome.driver> 
     </systemPropertyVariables> 
     </configuration> 
     </plugin> 


     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.20</version> 
     <configuration> 
      <suiteXmlFiles> 
      <suiteXmlFile>testng.xml</suiteXmlFile> 
      </suiteXmlFiles> 
     </configuration> 
     </plugin> 

     </plugins> 


     </build> 
     <dependencies> 

     <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium- 
    chrome-driver --> 
    <dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-chrome-driver</artifactId> 
    <version>3.8.1</version> 
    </dependency> 



     <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>3.4.0</version> 
     </dependency> 
     <dependency> 
    <groupId>org.testng</groupId> 
    <artifactId>testng</artifactId> 
     <version>6.8</version> 
    <scope>test</scope> 
    </dependency> 

    <dependency> 
      <groupId>org.seleniumhq.selenium</groupId> 
      <artifactId>selenium-chrome-driver</artifactId> 
      <version>3.8.1</version> 
     </dependency> 

     <dependency> 
     <groupId>io.github.bonigarcia</groupId> 
     <artifactId>webdrivermanager</artifactId> 
     <version>2.1.0</version> 
     </dependency> 



     <dependency> 
     <groupId>com.relevantcodes</groupId> 
     <artifactId>extentreports</artifactId> 
    <version>2.41.2</version> 
    </dependency> 



     <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>2.8.2</version> 
     </dependency> 
     <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>2.8.2</version> 
     </dependency> 
    </dependencies> 
</project> 


Selenuim Code 

public class App 
{ 
static String currentDir = System.getProperty("user.dir"); 
static WebDriver driver; 

    @BeforeClass 
    public static void setupClass() { 
     ChromeDriverManager.getInstance().setup(); 
     driver= new ChromeDriver(); 
     driver.get("https://www.google.com/"); 
    } 


@Test 
    public void test() { 





    System.out.println("Hello World!"); 

    } 
    } 
Powiązane problemy