Giter Club home page Giter Club logo

webdrivermanager's Introduction

Maven Central Build Status Quality Gate codecov badge-jdk License badge Backers on Open Collective Sponsors on Open Collective Support badge Twitter Follow

WebDriverManager is an open-source Java library that carries out the management (i.e., download, setup, and maintenance) of the drivers required by Selenium WebDriver (e.g., chromedriver, geckodriver, msedgedriver, etc.) in a fully automated manner. In addition, WebDriverManager provides other relevant features, such as the capability to discover browsers installed in the local system, building WebDriver objects (such as ChromeDriver, FirefoxDriver, EdgeDriver, etc.), and running browsers in Docker containers seamlessly.

Documentation

As of version 5, the documentation of WebDriverManager has moved here. This site contains all the features, examples, configuration, and advanced capabilities of WebDriverManager.

Driver Management

The primary use of WebDriverManager is the automation of driver management. For using this feature, you need to select a given manager in the WebDriverManager API (e.g., chromedriver() for Chrome) and invoke the method setup(). The following example shows the skeleton of a test case using JUnit 5, Selenium WebDriver, and WebDriverManager.

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import io.github.bonigarcia.wdm.WebDriverManager;

class ChromeTest {

    WebDriver driver;

    @BeforeAll
    static void setupAll() {
        WebDriverManager.chromedriver().setup();
    }

    @BeforeEach
    void setup() {
        driver = new ChromeDriver();
    }

    @AfterEach
    void teardown() {
        driver.quit();
    }

    @Test
    void test() {
        // Your test logic here
    }

}

Alternatively, you can use the method create() to manage automatically the driver and instantiate the WebDriver object in a single line. For instance, as follows:

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import io.github.bonigarcia.wdm.WebDriverManager;

class ChromeCreateTest {

    WebDriver driver;

    @BeforeEach
    void setup() {
        driver = WebDriverManager.chromedriver().create();
    }

    @AfterEach
    void teardown() {
        driver.quit();
    }

    @Test
    void test() {
        // Your test logic here
    }

}

For further information about the driver resolution algorithm implemented by WebDriverManager and configuration capabilities, read the documentation.

Browsers in Docker

Another relevant new feature available in WebDriverManager 5 is the ability to create browsers in Docker containers out of the box. The requirement to use this feature is to have installed a Docker Engine in the machine running the tests. To use it, we need to invoke the method browserInDocker() in conjunction with create() of a given manager. This way, WebDriverManager pulls the image from Docker Hub, starts the container, and instantiates the WebDriver object to use it. The following test shows a simple example using Chrome in Docker. This example also enables the recording of the browser session and remote access using noVNC:

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;

import io.github.bonigarcia.wdm.WebDriverManager;

class DockerChromeVncTest {

    WebDriver driver;

    WebDriverManager wdm = WebDriverManager.chromedriver().browserInDocker()
            .enableVnc().enableRecording();

    @BeforeEach
    void setup() {
        driver = wdm.create();
    }

    @AfterEach
    void teardown() {
        wdm.quit();
    }

    @Test
    void test() {
        // Your test logic here
    }

}

Support

WebDriverManager is part of OpenCollective, an online funding platform for open and transparent communities. You can support the project by contributing as a backer (i.e., a personal donation or recurring contribution) or as a sponsor (i.e., a recurring contribution by a company).

Backers

Sponsors

Alternatively, you can acknowledge my work by buying me a coffee:



About

WebDriverManager (Copyright © 2015-2024) is a project created and maintained by Boni Garcia and licensed under the terms of the Apache 2.0 License.

webdrivermanager's People

Contributors

altus34 avatar andrew-sumner avatar andruhon avatar artsok avatar asolntsev avatar baflqa avatar based2 avatar bolerr avatar bonigarcia avatar ccschneidr avatar costea32 avatar ddrrdddd avatar dependabot[bot] avatar eliasnogueira avatar giulong avatar gzsombor avatar hennr avatar igracia avatar jasperbeaurain avatar kazuki43zoo avatar phillcunnington avatar ricksbrown avatar rosolko avatar sebl29 avatar tharakadesilva avatar twisterrob avatar tyge68 avatar valfirst avatar vergiliusaw avatar wilx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webdrivermanager's Issues

SimpleLogger doesn´t support DEBUG

per default, the application is shipped with a simplelogger.properties file, so adding

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.4</version>
        </dependency>

will output some INFO.
The bad thing about SimpleLogger is, that it doesn´t support "DEBUG" Leven, its implemented with NOP.

Of course, anyone is free to choose whatever impl. right now,but:

=> maybe it´s a better idea to ship with another logging setup, that supports DEBUG level out of the box.

EdgeDriverManager.getInstance().setup() throws lots of warnings and errors to the console

htmlunit throws a huge bunch of warnings when webdrivermanager is navigating to the current version of microsoft web driver to download it.
I could see, that you already do: Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
But it looks like, that isn't enough.

I get the following warnings and 500+ more in IntelliJ and also when I run the IntegrationTests with Maven from command line.

13:56:56.442 WARN  CSS error: 'https://assets.onestore.ms/cdnfiles/onestorerolling-1604-06000/shell/v3/scss/shell.min.css' [1:15043] Error in expression. (Invalid token " ". Was expecting one of: <NUMBER>, "inherit", <IDENT>, <STRING>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <URI>, <FUNCTION>.) - c.g.htmlunit.DefaultCssErrorHandler 
13:56:56.580 WARN  CSS error: 'https://assets.onestore.ms/cdnfiles/onestorerolling-1604-06000/shell/common/respond-proxy.html' [1:2] Error in style rule. (Invalid token "<!--". Was expecting one of: <S>, <LBRACE>, ".", ":", "[", <COMMA>, <HASH>, <S>.) - c.g.htmlunit.DefaultCssErrorHandler 
13:56:56.580 WARN  CSS warning: 'https://assets.onestore.ms/cdnfiles/onestorerolling-1604-06000/shell/common/respond-proxy.html' [1:2] Ignoring the following declarations in this rule. - c.g.htmlunit.DefaultCssErrorHandler 
13:56:56.584 WARN  CSS error: 'https://assets.onestore.ms/cdnfiles/onestorerolling-1604-06000/shell/common/respond-proxy.html' [98:10] Error in style sheet. (Invalid token "(". Was expecting one of: <EOF>, <S>, <IDENT>, "<!--", "-->", ".", ":", "*", "[", <HASH>, <IMPORT_SYM>, <PAGE_SYM>, <MEDIA_SYM>, <FONT_FACE_SYM>, <ATKEYWORD>.) - c.g.htmlunit.DefaultCssErrorHandler 
13:56:56.659 WARN  CSS error: 'http://c.s-microsoft.com/en-us/CMSStyles/style.csx?k=3c9ade18-bc6a-b6bd-84c3-fc69aaaa7520_899796fc-1ab6-ed87-096b-4f10b915033c_e8d8727e-02f3-1a80-54c3-f87750a8c4de_6e5b2ac7-688a-4a18-9695-a31e8139fa0f_b3dad3e4-0853-1041-fa46-2e9d6598a584_fc29d27f-7342-9cf3-c2b5-a04f30605f03_28863b11-6a1b-a28c-4aab-c36e3deb3375_907fa087-b443-3de8-613e-b445338dad1f_a66bb9d1-7095-dfc6-5a12-849441da475c_1b0ca1a3-6da9-0dbf-9932-198c9f68caeb_ef11258b-15d1-8dab-81d5-8d18bc3234bc_11339d5d-cf04-22ad-4987-06a506090313_176b8afa-bab9-e793-c91f-d22b5a134b6e_8031d0e3-4981-8dbc-2504-bbd5121027b7_3f0c3b77-e132-00a5-3afc-9a2f141e9eae_aebeacd9-6349-54aa-9608-cb67eadc2d17_0cdb912f-7479-061d-e4f3-bea46f10a753_343d1ae8-c6c4-87d3-af9d-4720b6ea8f34_a905814f-2c84-2cd4-839e-5634cc0cc383_190a3885-bf35-9fab-6806-86ce81df76f6_ce476de2-91bf-768d-12f6-b1345b17f832_8beffb66-d700-2891-2c8d-02e40c7ac557_f2be0b5b-cb09-7419-2469-40333971901d_8e7f567d-245e-5dce-919d-1da2084a1db6_04cdd06f-491b-f252-4816-e05dbe3089b4_4d591b90-4f6b-d61a-3fe3-eeabaa54e007_d2a7617d-4fec-e271-3b3c-29c71d1edda1_c54c82ad-9a34-5e14-9f7e-f76e05daa48e_7662fbc3-5b00-dd7a-8c24-6b7bb7bb4b48_2bcd3d2d-6832-7053-3643-75fe6bb53d16_90b9cae5-0156-65e5-3652-a23ad05aa89b_0eea7408-d405-33d1-b3a3-e68154c11931_ba0d0603-e291-f64d-1224-c7179a0128a3_66db1513-3061-60df-c963-21f539556ce2_0f67a2ff-4303-729b-5e92-8c9fdf41f487_edaa7a2f-8af9-ec7d-b92f-7f1d2beb1752_8458a62c-bedc-f933-0122-e66265888317_2bb2f93a-070c-24f3-a072-d242d5ed2dc6_b330fd3d-1e8a-d40d-de4a-4d1c63486b10_60605f77-9b7b-d9fe-129c-c4937ddd200a_234e2194-00bc-d945-f90c-5cb0949c5e6c_c1777bd2-b94a-d4f5-9613-04f778b6d0cd_54a5d793-aac7-b19e-ed26-cc0395a49b4f_2d1729a6-67a8-5390-69d1-3988a55a41c8_31406ffb-4dfc-1e69-997b-05313bbb2db8_30db642a-887e-7424-636a-671576ac660e_3684062b-2b09-fd4e-0f3e-6a149539f0c8_23c3ae93-fc96-f39a-cb7e-0a9eee5d9678_d6bdf6a8-b29b-b551-3bca-52d5615a2c54_43047ac2-d851-7cba-7f5a-f4cccf880b75_26b11872-b581-5ebe-02f2-62eafc0f940e_21bce02d-2ced-81be-8029-a1ec05cf58cb_29c467ea-6cf4-06b9-ce8a-a18e4184eea8' [43:3] Error in declaration. '*' is not allowed as first char of a property. - c.g.htmlunit.DefaultCssErrorHandler 
13:56:56.662 WARN  CSS error: 'http://c.s-microsoft.com/en-us/CMSStyles/style.csx?k=3c9ade18-bc6a-b6bd-84c3-fc69aaaa7520_899796fc-1ab6-ed87-096b-4f10b915033c_e8d8727e-02f3-1a80-54c3-f87750a8c4de_6e5b2ac7-688a-4a18-9695-a31e8139fa0f_b3dad3e4-0853-1041-fa46-2e9d6598a584_fc29d27f-7342-9cf3-c2b5-a04f30605f03_28863b11-6a1b-a28c-4aab-c36e3deb3375_907fa087-b443-3de8-613e-b445338dad1f_a66bb9d1-7095-dfc6-5a12-849441da475c_1b0ca1a3-6da9-0dbf-9932-198c9f68caeb_ef11258b-15d1-8dab-81d5-8d18bc3234bc_11339d5d-cf04-22ad-4987-06a506090313_176b8afa-bab9-e793-c91f-d22b5a134b6e_8031d0e3-4981-8dbc-2504-bbd5121027b7_3f0c3b77-e132-00a5-3afc-9a2f141e9eae_aebeacd9-6349-54aa-9608-cb67eadc2d17_0cdb912f-7479-061d-e4f3-bea46f10a753_343d1ae8-c6c4-87d3-af9d-4720b6ea8f34_a905814f-2c84-2cd4-839e-5634cc0cc383_190a3885-bf35-9fab-6806-86ce81df76f6_ce476de2-91bf-768d-12f6-b1345b17f832_8beffb66-d700-2891-2c8d-02e40c7ac557_f2be0b5b-cb09-7419-2469-40333971901d_8e7f567d-245e-5dce-919d-1da2084a1db6_04cdd06f-491b-f252-4816-e05dbe3089b4_4d591b90-4f6b-d61a-3fe3-eeabaa54e007_d2a7617d-4fec-e271-3b3c-29c71d1edda1_c54c82ad-9a34-5e14-9f7e-f76e05daa48e_7662fbc3-5b00-dd7a-8c24-6b7bb7bb4b48_2bcd3d2d-6832-7053-3643-75fe6bb53d16_90b9cae5-0156-65e5-3652-a23ad05aa89b_0eea7408-d405-33d1-b3a3-e68154c11931_ba0d0603-e291-f64d-1224-c7179a0128a3_66db1513-3061-60df-c963-21f539556ce2_0f67a2ff-4303-729b-5e92-8c9fdf41f487_edaa7a2f-8af9-ec7d-b92f-7f1d2beb1752_8458a62c-bedc-f933-0122-e66265888317_2bb2f93a-070c-24f3-a072-d242d5ed2dc6_b330fd3d-1e8a-d40d-de4a-4d1c63486b10_60605f77-9b7b-d9fe-129c-c4937ddd200a_234e2194-00bc-d945-f90c-5cb0949c5e6c_c1777bd2-b94a-d4f5-9613-04f778b6d0cd_54a5d793-aac7-b19e-ed26-cc0395a49b4f_2d1729a6-67a8-5390-69d1-3988a55a41c8_31406ffb-4dfc-1e69-997b-05313bbb2db8_30db642a-887e-7424-636a-671576ac660e_3684062b-2b09-fd4e-0f3e-6a149539f0c8_23c3ae93-fc96-f39a-cb7e-0a9eee5d9678_d6bdf6a8-b29b-b551-3bca-52d5615a2c54_43047ac2-d851-7cba-7f5a-f4cccf880b75_26b11872-b581-5ebe-02f2-62eafc0f940e_21bce02d-2ced-81be-8029-a1ec05cf58cb_29c467ea-6cf4-06b9-ce8a-a18e4184eea8' [88:3] Error in declaration. '*' is not allowed as first char of a property. - c.g.htmlunit.DefaultCssErrorHandler 
13:56:56.664 WARN  CSS error: 'http://c.s-microsoft.com/en-us/CMSStyles/style.csx?k=3c9ade18-bc6a-b6bd-84c3-fc69aaaa7520_899796fc-1ab6-ed87-096b-4f10b915033c_e8d8727e-02f3-1a80-54c3-f87750a8c4de_6e5b2ac7-688a-4a18-9695-a31e8139fa0f_b3dad3e4-0853-1041-fa46-2e9d6598a584_fc29d27f-7342-9cf3-c2b5-a04f30605f03_28863b11-6a1b-a28c-4aab-c36e3deb3375_907fa087-b443-3de8-613e-b445338dad1f_a66bb9d1-7095-dfc6-5a12-849441da475c_1b0ca1a3-6da9-0dbf-9932-198c9f68caeb_ef11258b-15d1-8dab-81d5-8d18bc3234bc_11339d5d-cf04-22ad-4987-06a506090313_176b8afa-bab9-e793-c91f-d22b5a134b6e_8031d0e3-4981-8dbc-2504-bbd5121027b7_3f0c3b77-e132-00a5-3afc-9a2f141e9eae_aebeacd9-6349-54aa-9608-cb67eadc2d17_0cdb912f-7479-061d-e4f3-bea46f10a753_343d1ae8-c6c4-87d3-af9d-4720b6ea8f34_a905814f-2c84-2cd4-839e-5634cc0cc383_190a3885-bf35-9fab-6806-86ce81df76f6_ce476de2-91bf-768d-12f6-b1345b17f832_8beffb66-d700-2891-2c8d-02e40c7ac557_f2be0b5b-cb09-7419-2469-40333971901d_8e7f567d-245e-5dce-919d-1da2084a1db6_04cdd06f-491b-f252-4816-e05dbe3089b4_4d591b90-4f6b-d61a-3fe3-eeabaa54e007_d2a7617d-4fec-e271-3b3c-29c71d1edda1_c54c82ad-9a34-5e14-9f7e-f76e05daa48e_7662fbc3-5b00-dd7a-8c24-6b7bb7bb4b48_2bcd3d2d-6832-7053-3643-75fe6bb53d16_90b9cae5-0156-65e5-3652-a23ad05aa89b_0eea7408-d405-33d1-b3a3-e68154c11931_ba0d0603-e291-f64d-1224-c7179a0128a3_66db1513-3061-60df-c963-21f539556ce2_0f67a2ff-4303-729b-5e92-8c9fdf41f487_edaa7a2f-8af9-ec7d-b92f-7f1d2beb1752_8458a62c-bedc-f933-0122-e66265888317_2bb2f93a-070c-24f3-a072-d242d5ed2dc6_b330fd3d-1e8a-d40d-de4a-4d1c63486b10_60605f77-9b7b-d9fe-129c-c4937ddd200a_234e2194-00bc-d945-f90c-5cb0949c5e6c_c1777bd2-b94a-d4f5-9613-04f778b6d0cd_54a5d793-aac7-b19e-ed26-cc0395a49b4f_2d1729a6-67a8-5390-69d1-3988a55a41c8_31406ffb-4dfc-1e69-997b-05313bbb2db8_30db642a-887e-7424-636a-671576ac660e_3684062b-2b09-fd4e-0f3e-6a149539f0c8_23c3ae93-fc96-f39a-cb7e-0a9eee5d9678_d6bdf6a8-b29b-b551-3bca-52d5615a2c54_43047ac2-d851-7cba-7f5a-f4cccf880b75_26b11872-b581-5ebe-02f2-62eafc0f940e_21bce02d-2ced-81be-8029-a1ec05cf58cb_29c467ea-6cf4-06b9-ce8a-a18e4184eea8' [93:3] Error in declaration. '*' is not allowed as first char of a property. - c.g.htmlunit.DefaultCssErrorHandler 
13:56:56.665 WARN  CSS error: 'http://c.s-microsoft.com/en-us/CMSStyles/style.csx?k=3c9ade18-bc6a-b6bd-84c3-fc69aaaa7520_899796fc-1ab6-ed87-096b-4f10b915033c_e8d8727e-02f3-1a80-54c3-f87750a8c4de_6e5b2ac7-688a-4a18-9695-a31e8139fa0f_b3dad3e4-0853-1041-fa46-2e9d6598a584_fc29d27f-7342-9cf3-c2b5-a04f30605f03_28863b11-6a1b-a28c-4aab-c36e3deb3375_907fa087-b443-3de8-613e-b445338dad1f_a66bb9d1-7095-dfc6-5a12-849441da475c_1b0ca1a3-6da9-0dbf-9932-198c9f68caeb_ef11258b-15d1-8dab-81d5-8d18bc3234bc_11339d5d-cf04-22ad-4987-06a506090313_176b8afa-bab9-e793-c91f-d22b5a134b6e_8031d0e3-4981-8dbc-2504-bbd5121027b7_3f0c3b77-e132-00a5-3afc-9a2f141e9eae_aebeacd9-6349-54aa-9608-cb67eadc2d17_0cdb912f-7479-061d-e4f3-bea46f10a753_343d1ae8-c6c4-87d3-af9d-4720b6ea8f34_a905814f-2c84-2cd4-839e-5634cc0cc383_190a3885-bf35-9fab-6806-86ce81df76f6_ce476de2-91bf-768d-12f6-b1345b17f832_8beffb66-d700-2891-2c8d-02e40c7ac557_f2be0b5b-cb09-7419-2469-40333971901d_8e7f567d-245e-5dce-919d-1da2084a1db6_04cdd06f-491b-f252-4816-e05dbe3089b4_4d591b90-4f6b-d61a-3fe3-eeabaa54e007_d2a7617d-4fec-e271-3b3c-29c71d1edda1_c54c82ad-9a34-5e14-9f7e-f76e05daa48e_7662fbc3-5b00-dd7a-8c24-6b7bb7bb4b48_2bcd3d2d-6832-7053-3643-75fe6bb53d16_90b9cae5-0156-65e5-3652-a23ad05aa89b_0eea7408-d405-33d1-b3a3-e68154c11931_ba0d0603-e291-f64d-1224-c7179a0128a3_66db1513-3061-60df-c963-21f539556ce2_0f67a2ff-4303-729b-5e92-8c9fdf41f487_edaa7a2f-8af9-ec7d-b92f-7f1d2beb1752_8458a62c-bedc-f933-0122-e66265888317_2bb2f93a-070c-24f3-a072-d242d5ed2dc6_b330fd3d-1e8a-d40d-de4a-4d1c63486b10_60605f77-9b7b-d9fe-129c-c4937ddd200a_234e2194-00bc-d945-f90c-5cb0949c5e6c_c1777bd2-b94a-d4f5-9613-04f778b6d0cd_54a5d793-aac7-b19e-ed26-cc0395a49b4f_2d1729a6-67a8-5390-69d1-3988a55a41c8_31406ffb-4dfc-1e69-997b-05313bbb2db8_30db642a-887e-7424-636a-671576ac660e_3684062b-2b09-fd4e-0f3e-6a149539f0c8_23c3ae93-fc96-f39a-cb7e-0a9eee5d9678_d6bdf6a8-b29b-b551-3bca-52d5615a2c54_43047ac2-d851-7cba-7f5a-f4cccf880b75_26b11872-b581-5ebe-02f2-62eafc0f940e_21bce02d-2ced-81be-8029-a1ec05cf58cb_29c467ea-6cf4-06b9-ce8a-a18e4184eea8' [98:3] Error in declaration. '*' is not allowed as first char of a property. - c.g.htmlunit.DefaultCssErrorHandler 
13:56:56.667 WARN  CSS error: 'http://c.s-microsoft.com/en-us/CMSStyles/style.csx?k=3c9ade18-bc6a-b6bd-84c3-fc69aaaa7520_899796fc-1ab6-ed87-096b-4f10b915033c_e8d8727e-02f3-1a80-54c3-f87750a8c4de_6e5b2ac7-688a-4a18-9695-a31e8139fa0f_b3dad3e4-0853-1041-fa46-2e9d6598a584_fc29d27f-7342-9cf3-c2b5-a04f30605f03_28863b11-6a1b-a28c-4aab-c36e3deb3375_907fa087-b443-3de8-613e-b445338dad1f_a66bb9d1-7095-dfc6-5a12-849441da475c_1b0ca1a3-6da9-0dbf-9932-198c9f68caeb_ef11258b-15d1-8dab-81d5-8d18bc3234bc_11339d5d-cf04-22ad-4987-06a506090313_176b8afa-bab9-e793-c91f-d22b5a134b6e_8031d0e3-4981-8dbc-2504-bbd5121027b7_3f0c3b77-e132-00a5-3afc-9a2f141e9eae_aebeacd9-6349-54aa-9608-cb67eadc2d17_0cdb912f-7479-061d-e4f3-bea46f10a753_343d1ae8-c6c4-87d3-af9d-4720b6ea8f34_a905814f-2c84-2cd4-839e-5634cc0cc383_190a3885-bf35-9fab-6806-86ce81df76f6_ce476de2-91bf-768d-12f6-b1345b17f832_8beffb66-d700-2891-2c8d-02e40c7ac557_f2be0b5b-cb09-7419-2469-40333971901d_8e7f567d-245e-5dce-919d-1da2084a1db6_04cdd06f-491b-f252-4816-e05dbe3089b4_4d591b90-4f6b-d61a-3fe3-eeabaa54e007_d2a7617d-4fec-e271-3b3c-29c71d1edda1_c54c82ad-9a34-5e14-9f7e-f76e05daa48e_7662fbc3-5b00-dd7a-8c24-6b7bb7bb4b48_2bcd3d2d-6832-7053-3643-75fe6bb53d16_90b9cae5-0156-65e5-3652-a23ad05aa89b_0eea7408-d405-33d1-b3a3-e68154c11931_ba0d0603-e291-f64d-1224-c7179a0128a3_66db1513-3061-60df-c963-21f539556ce2_0f67a2ff-4303-729b-5e92-8c9fdf41f487_edaa7a2f-8af9-ec7d-b92f-7f1d2beb1752_8458a62c-bedc-f933-0122-e66265888317_2bb2f93a-070c-24f3-a072-d242d5ed2dc6_b330fd3d-1e8a-d40d-de4a-4d1c63486b10_60605f77-9b7b-d9fe-129c-c4937ddd200a_234e2194-00bc-d945-f90c-5cb0949c5e6c_c1777bd2-b94a-d4f5-9613-04f778b6d0cd_54a5d793-aac7-b19e-ed26-cc0395a49b4f_2d1729a6-67a8-5390-69d1-3988a55a41c8_31406ffb-4dfc-1e69-997b-05313bbb2db8_30db642a-887e-7424-636a-671576ac660e_3684062b-2b09-fd4e-0f3e-6a149539f0c8_23c3ae93-fc96-f39a-cb7e-0a9eee5d9678_d6bdf6a8-b29b-b551-3bca-52d5615a2c54_43047ac2-d851-7cba-7f5a-f4cccf880b75_26b11872-b581-5ebe-02f2-62eafc0f940e_21bce02d-2ced-81be-8029-a1ec05cf58cb_29c467ea-6cf4-06b9-ce8a-a18e4184eea8' [103:3] Error in declaration. '*' is not allowed as first char of a property. - c.g.htmlunit.DefaultCssErrorHandler 
13:56:56.667 WARN  CSS error: 'http://c.s-microsoft.com/en-us/CMSStyles/style.csx?k=3c9ade18-bc6a-b6bd-84c3-fc69aaaa7520_899796fc-1ab6-ed87-096b-4f10b915033c_e8d8727e-02f3-1a80-54c3-f87750a8c4de_6e5b2ac7-688a-4a18-9695-a31e8139fa0f_b3dad3e4-0853-1041-fa46-2e9d6598a584_fc29d27f-7342-9cf3-c2b5-a04f30605f03_28863b11-6a1b-a28c-4aab-c36e3deb3375_907fa087-b443-3de8-613e-b445338dad1f_a66bb9d1-7095-dfc6-5a12-849441da475c_1b0ca1a3-6da9-0dbf-9932-198c9f68caeb_ef11258b-15d1-8dab-81d5-8d18bc3234bc_11339d5d-cf04-22ad-4987-06a506090313_176b8afa-bab9-e793-c91f-d22b5a134b6e_8031d0e3-4981-8dbc-2504-bbd5121027b7_3f0c3b77-e132-00a5-3afc-9a2f141e9eae_aebeacd9-6349-54aa-9608-cb67eadc2d17_0cdb912f-7479-061d-e4f3-bea46f10a753_343d1ae8-c6c4-87d3-af9d-4720b6ea8f34_a905814f-2c84-2cd4-839e-5634cc0cc383_190a3885-bf35-9fab-6806-86ce81df76f6_ce476de2-91bf-768d-12f6-b1345b17f832_8beffb66-d700-2891-2c8d-02e40c7ac557_f2be0b5b-cb09-7419-2469-40333971901d_8e7f567d-245e-5dce-919d-1da2084a1db6_04cdd06f-491b-f252-4816-e05dbe3089b4_4d591b90-4f6b-d61a-3fe3-eeabaa54e007_d2a7617d-4fec-e271-3b3c-29c71d1edda1_c54c82ad-9a34-5e14-9f7e-f76e05daa48e_7662fbc3-5b00-dd7a-8c24-6b7bb7bb4b48_2bcd3d2d-6832-7053-3643-75fe6bb53d16_90b9cae5-0156-65e5-3652-a23ad05aa89b_0eea7408-d405-33d1-b3a3-e68154c11931_ba0d0603-e291-f64d-1224-c7179a0128a3_66db1513-3061-60df-c963-21f539556ce2_0f67a2ff-4303-729b-5e92-8c9fdf41f487_edaa7a2f-8af9-ec7d-b92f-7f1d2beb1752_8458a62c-bedc-f933-0122-e66265888317_2bb2f93a-070c-24f3-a072-d242d5ed2dc6_b330fd3d-1e8a-d40d-de4a-4d1c63486b10_60605f77-9b7b-d9fe-129c-c4937ddd200a_234e2194-00bc-d945-f90c-5cb0949c5e6c_c1777bd2-b94a-d4f5-9613-04f778b6d0cd_54a5d793-aac7-b19e-ed26-cc0395a49b4f_2d1729a6-67a8-5390-69d1-3988a55a41c8_31406ffb-4dfc-1e69-997b-05313bbb2db8_30db642a-887e-7424-636a-671576ac660e_3684062b-2b09-fd4e-0f3e-6a149539f0c8_23c3ae93-fc96-f39a-cb7e-0a9eee5d9678_d6bdf6a8-b29b-b551-3bca-52d5615a2c54_43047ac2-d851-7cba-7f5a-f4cccf880b75_26b11872-b581-5ebe-02f2-62eafc0f940e_21bce02d-2ced-81be-8029-a1ec05cf58cb_29c467ea-6cf4-06b9-ce8a-a18e4184eea8' [108:3] Error in declaration. '*' is not allowed as first char of a property. - c.g.htmlunit.DefaultCssErrorHandler 

Edge Webdriver Unkown error issue

I'm trying to run my automation script for Microsoft Ege. Where all the other browsers have no problem running. Edge never works.

This is the code I use:
EdgeDriverManager.getInstance().setup(); return new EdgeDriver();

If I try to run this with a script I get the following stacktrace:
`org.openqa.selenium.WebDriverException: Unknown error
Command duration or timeout: 1.27 seconds
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'Steve-PC', ip: '192.168.56.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_77'
Driver info: org.openqa.selenium.edge.EdgeDriver

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:152)
at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:141)
at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:98)
at eu.intix.data.setupcleanup.SetupBrowsers.setupSingleBrowser(SetupBrowsers.java:54)
at eu.intix.data.AbstractTest.beforeTest(AbstractTest.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:100)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:515)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:216)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:143)
at org.testng.TestRunner.beforeRun(TestRunner.java:631)
at org.testng.TestRunner.run(TestRunner.java:599)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:368)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:363)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:321)
at org.testng.SuiteRunner.run(SuiteRunner.java:270)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1284)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1209)
at org.testng.TestNG.runSuites(TestNG.java:1124)
at org.testng.TestNG.run(TestNG.java:1096)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:74)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:121)`

Do I forget to set something or do I need to add a setting?

Test will freeze/fail, trying to download driver binary, when developer computer is temporarily offline

I have a scenario where I had online access and was initially able to download the Chrome driver into my local machine but, when network access is limited/offline, my test will freeze before it starts and never get past this line in the output log:

2016-03-29 08:56:03 [pool-1-thread-1] INFO io.github.bonigarcia.wdm.BrowserManager - Reading http://chromedriver.storage.googleapis.com/ to seek chromedriver
--- then, after 40 seconds ---
2016-03-29 08:56:43 [pool-1-thread-1] WARN io.github.bonigarcia.wdm.BrowserManager - [1/3] Exception reading http://chromedriver.storage.googleapis.com/ to seek chromedriver: java.net.SocketException Software caused connection abort: recv failed
-- test suite fails to start --

What I am expecting here is for WebDriverManager to fallback and use the previously downloaded binary driver. Is this possible to fix?

Add the ability to run offline

It would be really nice if web driver manager would use the latest download when the test system does not have an internet connection. I frequently work on my code while not connected to the internet and this prevents me from doing that.

Proxy Server

I get a Connection refused exception.
This is probably due to our proxy server. Is it possible to specify a proxy server?

WDM is unable to download the 64-bit IEDriverServer

WDM is unable to download the 64-bit IEDriverServer. The filter that occurs on BrowserManager.java, line 219 to 226 (labeled 'Round 1 : Filter by OS'), is filtering out the IEDriverServer url that contains the string 'x64' instead of 'Win' . The 'url.getFile().toLowerCase().contains never will match because the string doesn't contain 'Win' in it.

Example URL:

http://selenium-release.storage.googleapis.com/2.52/IEDriverServer_x64_2.52.0.zip

Here is the method that is having the problem:

        for (URL url : list) {
            for (OperativeSystem os : OperativeSystem.values()) {
                if (MY_OS_NAME.contains(os.name())
                        && url.getFile().toLowerCase().contains(os.name())) {
                    out.add(url);
                }
            }
        }

Exception while try to download Phantomjs

I have added the following dependency into my pom.xml:

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

But when I launch my tests and execute the following line:

PhantomJsDriverManager.getInstance().setup("2.1.1");

I get the exception below:

   �[31mjava.lang.RuntimeException: org.openqa.selenium.NoSuchElementException: Unable to locate element with ID: available-downloads
      For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
      Build info: version: '2.48.2', revision: '41bccdd10cf2c0560f637404c2d96164b67d9d67', time: '2015-10-09 13:08:06'
      System info: host: 'ALC-1DT2L12', ip: '7.110.43.105', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_51'
      Driver info: driver.version: BrowserDriver
        at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:272)
        at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:103)
        at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:86)

Thanks in advance

Doesn't work when building on Jenkins

Do I still need to install the binaries on my Jenkins build server, or does this library remove the need for that as well? Only, at the moment this works wonderfully locally, but not at all on Jenkins.

Unfortunately the only bit of the exception that Jenkins logging gives me is:
org.openqa.selenium.WebDriverException
and nothing else...

MicrosoftWebDriver.exe ... is not a valid Win32 application

I'm on Windows 7, 64-bit, FWIW.

I'm a Maven noob. What's the Maven target for creating a Jar from your project?

On to my issue: I ran the install target, and got the following:

Running io.github.bonigarcia.wdm.test.EdgeTest
[2016-06-10 17:25:08:305] [main] INFO BrowserManager - Latest version of MicrosoftWebDriver is 14156DA0-D40F-460A-B14D-1B264CA081A5
[2016-06-10 17:25:08:430] [main] INFO Downloader - Downloading https://download.microsoft.com/download/1/4/1/14156DA0-D40F-460A-B14D-1B264CA081A5/MicrosoftWebDriver.exe to C:\Users\15037\.m2\repository\webdriver\MicrosoftWebDriver\14156DA0-D40F-460A-B14D-1B264CA081A5\MicrosoftWebDriver.exe
[2016-06-10 17:25:09:538] [main] INFO BrowserManager - Exporting webdriver.edge.driver as C:\Users\15037\.m2\repository\webdriver\MicrosoftWebDriver\14156DA0-D40F-460A-B14D-1B264CA081A5\MicrosoftWebDriver.exe
Jun 10, 2016 5:25:29 PM org.openqa.selenium.os.UnixProcess checkForError
SEVERE: org.apache.commons.exec.ExecuteException: Execution failed (Exit value: -559038737. Caused by java.io.IOException: Cannot run program "C:\Users\15037\.m2\repository\webdriver\MicrosoftWebDriver\14156DA0-D40F-460A-B14D-1B264CA081A5\MicrosoftWebDriver.exe" (in directory "."): CreateProcess error=193, %1 is not a valid Win32 application)

If I execute that file directly, I get the same error.

Failed to load class "org.slf4j.impl.StaticLoggerBinder".

It seems that the SLF4J Maven child dependency (1.7.5) included with WebDriverManager 1.2.0 is not sufficient to prevent this error when running a Selenium test:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

A temporary workaround was to include the latest slf4j-simple to my Maven project:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.12</version>
</dependency>

Some issues with ChromeTest

Hi,

First I just want to say that this project is a great initiative!
However, I would like to mention two things.

Currently version 1.3.1 is unavailable at http://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager
So I had to use version 1.3.0 to get things working with maven.

I had to add this into my pom file to prevent an error when using the example ChromeTest.

org.slf4j slf4j-simple 1.7.13

If not added I get this error/warning:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

I'm using Eclipse 4.5.1 on Windows 10 64 bit.
I'm new to Java, Maven and Selenium so maybe I made a mistake somewhere.
I just thought that I should report it if this is an actual error.

Keep up the good work!

Cheers,
Christian

UnknownHostException in ChromeDriverManager.getInstance().setup();

I am not able to get the latest chrome driver using ChromeDriverManager:

FAILED CONFIGURATION: @BeforeClass setUp
java.lang.RuntimeException: java.net.UnknownHostException: chromedriver.storage.googleapis.com
at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:206)
at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:88)
at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:73)
at test.java.base.Base.startDriver(Base.java:75)
at test.java.base.Base.launchUrl(Base.java:85)
at test.java.tests.LoginTest.setUp(LoginTest.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
at org.testng.in

Javadoc

Please add Javadoc to all public methods, such as BrowserManager.setup(). It's not clear what each method does, and how methods differ from each other.

CredentialsProvider Error

Hi,

I use the webdriver manager to get the latest versions of all browsers and install them in the correct places now i recieve an error when trying to download edge driver it says:

java.lang.NoClassDefFoundError: org/apache/http/client/CredentialsProvider

Automatic PhantomJS driver download doesn't work anymore

As of this morning we're getting this:

java.lang.RuntimeException: org.openqa.selenium.NoSuchElementException: Unable to locate element with ID: available-downloads
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'Nathans-MacBook-Pro.local', ip: '10.0.50.166', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.7.0_79'
Driver info: driver.version: HtmlUnitDriver
    at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:224)
    at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:96)
    at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:75)
    at com.cameraforensics.ui.DriverFactory.createNewDriver(DriverFactory.java:40)
    at com.cameraforensics.ui.DriverFactory.access$000(DriverFactory.java:14)
    at com.cameraforensics.ui.DriverFactory$1.initialValue(DriverFactory.java:22)
    at com.cameraforensics.ui.DriverFactory$1.initialValue(DriverFactory.java:19)
    at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:160)
    at java.lang.ThreadLocal.get(ThreadLocal.java:150)
    at com.cameraforensics.ui.DriverFactory.get(DriverFactory.java:27)
    at com.cameraforensics.ui.UserInterfaceTest.setup(UserInterfaceTest.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:326)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:88)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:58)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:291)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:72)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:289)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:59)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:269)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:365)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:105)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:56)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:64)
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
    at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:106)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element with ID: available-downloads
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'Nathans-MacBook-Pro.local', ip: '10.0.50.166', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.7.0_79'
Driver info: driver.version: HtmlUnitDriver
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementById(HtmlUnitDriver.java:1008)
    at org.openqa.selenium.By$ById.findElement(By.java:218)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1707)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1703)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:1357)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1703)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:595)
    at io.github.bonigarcia.wdm.PhantomJsDriverManager.getDrivers(PhantomJsDriverManager.java:72)

If I go to the driver downloads URL, I can't see an available-downloads identified table. Could it be that they've changed their page somehow?

Explicit version passing does not work

Pre-requisities
Library 1.3.1 / 1.4.1 version:
Java 1.8.0_74 JDK

Description
Code call # 1:
ChromeDriverManager.getInstance().setup();

Code call # 2:
String version = "2.20"; ChromeDriverManager.getInstance().setup(version);

When running maven via:
mvn clean install
Library is always downloading LATEST version despite the call with explicit one, crashing in maven when other version is passed and library is not present in the ~/.m2/repositries/webdriver directory

When passing
-Dwdm.chromeDriverVersion=2.20
on mvn command line, I face the crash issue

Steps to reproduce
Please try to observe when does not contain any downloaded version of the driver :

  1. Remove ~/.m2/repository/webdriver folder
  2. Pass version of Code # 2
  3. Run mvn -DsuiteXmlFile=src/test/resources/testngsuite.xml test

or

  1. Remove ~/.m2/repository/webdriver folder
  2. Run mvn -Dwdm.chromeDriverVersion=2.20 -DsuiteXmlFile=src/test/resources/testngsuite.xml test

Actual
Parameter** 'directory' is not a directory

`Tests run: 383, Failures: 1, Errors: 0, Skipped: 382, Time elapsed: 3.662 sec <<< FAILURE! - in TestSuite
initWebBrowserBeforeSuite(com.xxxx.XXXXTest) Time elapsed: 2.061 sec <<< FAILURE!

java.lang.RuntimeException: java.lang.IllegalArgumentException: Parameter 'directory' is not a directory
at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:210)
at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:87)
at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:74)`

Expected
Desired version is downloaded.

Additional information
As a conclusion - only LATEST version is taken into account and downloaded, passing any version creates "directory" problem when calling by maven.

I did not face the issue once Code # 1 downloaded the latest version, and stored it, then everything was fine until today.

P.S.
Despite I have to go with the latest version, thank you for the library @bonigarcia , it is really awsome! Thanks!

Adding Appium to the list of Drivers

I've started using your library for a project of mine and was wondering if you would be interest in a pull request for adding Appium drivers to the list.

Firefox 47 does not start

Hi
just got Firefox upgraded to 47 and my Selenium Test stoped working with FirefoxDriver and selenium-server-standalone.
I tried using WebDriver like this:
System.setProperty("webdriver.gecko.driver", "C:\\path\\geckodriver.exe"); MarionetteDriverManager.getInstance().setup(); driver = new MarionetteDriver();
my system:

  • Win 7 64 bit
  • webdrivermanager1.4.4.jar (unfortunately we can not use maven)
  • geckodriver-v0.8.0-win32

I can not find webdrivermanager1.4.5.jar and geckodriver-v0.8.0-win64

Any help will be highly appreciated
Alex

Ability to set the driver DesiredCapabilities

Hi,

Maybe this is already possible but if not can we get a way to set the browsers DesiredCapabilities.... for instance

org.openqa.selenium.Proxy proxy = new org.openqa.selenium.Proxy(); proxy.setHttpProxy(PROXY) .setFtpProxy(PROXY) .setSslProxy(PROXY); DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapability(CapabilityType.PROXY, proxy); WebDriver driver = new FirefoxDriver(cap);

Is the usage of a mirror possible?

Hi and thanks for this project!

I tried to use a different download source for the phantomjs binaries which fails due to hard wired code that works for the bitbucket source.

Do you know working mirrors for all the binaries?

if not: I played with the code and got the link scraping to work with jsoup instead of HtmlUnit (which failed to find all elements properly).
Are you in case fine with merging a PR with jsoup as another dependency?

TRACE logging is turned on for WDM version 1.4.2 ??? Filling up my test server.

Getting tons of TRACE logging using WDM 1.4.2 . In one automation test, the log file is getting to 100MB+ in size because of this. How do I turn this off?

2016-09-30 10:57:15 [pool-1-thread-1]  TRACE BrowserManager - Checking /home/tomcat/.m2/repository/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.pom 
2016-09-30 10:57:15 [pool-1-thread-1]  TRACE BrowserManager - Checking /home/tomcat/.m2/repository/com/google/code/findbugs/jsr305/3.0.1/jsr305-3.0.1.pom 
2016-09-30 10:57:15 [pool-1-thread-1]  TRACE BrowserManager - Checking /home/tomcat/.m2/repository/com/google/code/findbugs/jsr305/3.0.1/_remote.repositories 
...
2016-09-30 10:54:22 [main]  TRACE BrowserManager - Checking /home/tomcat/.m2/repository/com/saucelabs/saucerest/1.0.22/saucerest-1.0.22.pom.lastUpdated 
2016-09-30 10:54:22 [main]  TRACE BrowserManager - Checking /home/tomcat/.m2/repository/com/saucelabs/saucerest/1.0.22/saucerest-1.0.22.jar 
2016-09-30 10:54:22 [main]  TRACE BrowserManager - Checking /home/tomcat/.m2/repository/com/saucelabs/saucerest/1.0.22/saucerest-1.0.22.pom.sha1 
...
2016-09-30 10:55:46 [pool-1-thread-1]  TRACE BrowserManager - Checking /home/tomcat/.m2/repository/com/jayway/jsonpath/json-path/0.9.0/json-path-0.9.0.jar 
2016-09-30 10:55:46 [pool-1-thread-1]  TRACE BrowserManager - Checking /home/tomcat/.m2/repository/com/jayway/jsonpath/json-path/0.9.0/json-path-0.9.0.pom.sha1 
...

Seems to be coming from BrowserManager.java , around lines #118 - 130

I tried this but it wasn't effective: -Dlog4j.logger.io.github.bonigarcia.wdm=INFO

BUG for IE under Win10 x64 architecture

Hi,

I discovered that using InternetExplorerDriverManager, no driver is downloaded. I'm using Win10 on 64 bits.
The problem looks to be the BrowserManager#filter(List<URL> list, Architecture arch) method. Original list of drivers for IE contains the following:
[http://selenium-release.storage.googleapis.com/2.53/IEDriverServer_x64_2.53.1.zip, http://selenium-release.storage.googleapis.com/2.53/IEDriverServer_x64_2.53.0.zip, http://selenium-release.storage.googleapis.com/2.53/IEDriverServer_Win32_2.53.1.zip, http://selenium-release.storage.googleapis.com/2.53/IEDriverServer_Win32_2.53.0.zip]
First you filter for OS and you eliminate all urls that do not have in link the OS name (win in our case).
This means the first and second link are eliminated.
Second, you eliminate all those that have incorrect architecture (doesn't have 64 in our case). And you remain with an empty list. :-(

ChromeDriver error: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property;

I have set up webdrivermanager as per instructions given in the readme. On running a test, the driver instantiation throws an error:
java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html at com.google.common.base.Preconditions.checkState(Preconditions.java:199) at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:109) at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32) at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137) at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:296) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88) at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:116) at AccountQuery.start(AccountQuery.java:37) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86) at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:514) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:215) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142) at org.testng.TestRunner.beforeRun(TestRunner.java:656) at org.testng.TestRunner.run(TestRunner.java:624) at org.testng.SuiteRunner.runTest(SuiteRunner.java:366) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319) at org.testng.SuiteRunner.run(SuiteRunner.java:268) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244) at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) at org.testng.TestNG.run(TestNG.java:1064) at Main.main(Main.java:16)

What am I doing wrong? Code snippet is given below:

public class AccountQuery {

    static WebDriver driver;
    private static final Logger log = Logger.getLogger("AccountQuery");
    private StringBuffer verificationErrors = new StringBuffer();

    @BeforeClass
    public static void setupClass() {
        ChromeDriverManager.getInstance().setup();
    }

    @BeforeTest
    public void start() {
        try{
            driver = new ChromeDriver();
        } catch (Exception ex){
            log.info("Exception while instantiating driver. ",ex);
        }
    }

    @Test(dataProvider="ConfigData",dataProviderClass=TestDataProvider.class)
    public void FirstLogin(Configuration config) throws InterruptedException {
        driver.manage().window().maximize();
        driver.get(config.getString("URL"));
        driver.findElement(By.id("username")).sendKeys(config.getString("username"));
        // other similar lines omitted
    }

    @AfterClass(alwaysRun = true)
    public void tearDown() throws Exception {
        if (driver != null) {
            driver.quit();
        }
    }
} 

Maven dependencies:

       <dependency>   
            <groupId>org.seleniumhq.selenium</groupId>   
            <artifactId>selenium-java</artifactId>   
            <version>2.53.0</version>   
        </dependency>   
        <dependency>   
            <groupId>org.seleniumhq.selenium</groupId>   
            <artifactId>selenium-chrome-driver</artifactId>   
            <version>2.53.0</version>   
        </dependency>   
        <dependency>   
            <groupId>io.github.bonigarcia</groupId>    
            <artifactId>webdrivermanager</artifactId>   
            <version>1.4.5</version>    
        </dependency>    

download not working when behind a Proxy

I want to use PhantomJSDriver for my tests, so i tried a setup like this:
PhantomJsDriverManager.getInstance().setup()

For downloading, it internally uses HtmlUnitDriver - without a proxy being set:

PhantomJsDriverManager.getDrivers() 
...
// Using HtmlUnitDriver to read package URL
             WebDriver driver = new HtmlUnitDriver();
             driver.manage().timeouts().implicitlyWait(
                           WdmConfig.getInt("wdm.timeout"), TimeUnit.SECONDS);
             driver.get(phantomjsDriverUrl);
             WebElement downloadsTable = driver
                           .findElement(By.id("available-downloads"));

=> please add the option to setup a proxy here, so downloading the binaries will also work in a network behind a proxy.

Rename application.properties

The configuration file application.properties name is rather confusing if you want quickily to identify it. Would it be possible to rename it to webdrivermanager.properties?

Webdrivermanager 1.4.9 not working with Selenium 3.0.0-beta4

When upgrading to Selenium 3.0.0-beta4 it fails to start the drivers with the following exception:

java.lang.NoClassDefFoundError: org/openqa/selenium/ElementNotSelectableException
        at org.openqa.selenium.remote.ErrorCodes.<clinit>(ErrorCodes.java:107)
        at org.openqa.selenium.remote.ErrorHandler.<init>(ErrorHandler.java:73)
        at org.openqa.selenium.remote.ErrorHandler.<init>(ErrorHandler.java:64)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:87)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:170)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:159)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:148)
  ...

My guess is that wdm is using Selenium 2.53.1

> mvn dependency:tree
[INFO] +- org.seleniumhq.selenium:selenium-java:jar:3.0.0-beta4:compile
[INFO] |  +- org.seleniumhq.selenium:selenium-chrome-driver:jar:3.0.0-beta4:compile
[INFO] |  |  \- org.seleniumhq.selenium:selenium-remote-driver:jar:3.0.0-beta4:compile
[INFO] |  |     +- cglib:cglib-nodep:jar:3.2.4:compile
[INFO] |  |     +- org.apache.commons:commons-exec:jar:1.3:compile
[INFO] |  |     +- org.apache.httpcomponents:httpclient:jar:4.5.2:compile
[INFO] |  |     |  \- org.apache.httpcomponents:httpcore:jar:4.4.4:compile
[INFO] |  |     +- org.apache.httpcomponents:httpmime:jar:4.5.2:compile
[INFO] |  |     +- net.java.dev.jna:jna:jar:4.1.0:compile
[INFO] |  |     \- net.java.dev.jna:jna-platform:jar:4.1.0:compile
[INFO] |  +- org.seleniumhq.selenium:selenium-edge-driver:jar:3.0.0-beta4:compile
[INFO] |  +- org.seleniumhq.selenium:selenium-firefox-driver:jar:3.0.0-beta4:compile
[INFO] |  +- org.seleniumhq.selenium:selenium-ie-driver:jar:3.0.0-beta4:compile
[INFO] |  +- org.seleniumhq.selenium:selenium-opera-driver:jar:3.0.0-beta4:compile
[INFO] |  +- org.seleniumhq.selenium:selenium-safari-driver:jar:3.0.0-beta4:compile
[INFO] |  |  \- io.netty:netty:jar:3.5.7.Final:compile
[INFO] |  +- org.seleniumhq.selenium:selenium-support:jar:3.0.0-beta4:compile
[INFO] |  \- com.codeborne:phantomjsdriver:jar:1.3.0:compile
...
[INFO] \- io.github.bonigarcia:webdrivermanager:jar:1.4.9:compile
[INFO]    +- com.typesafe:config:jar:1.2.1:compile
[INFO]    +- org.apache.commons:commons-lang3:jar:3.4:compile
[INFO]    +- org.rauschig:jarchivelib:jar:0.7.1:compile
[INFO]    |  \- org.apache.commons:commons-compress:jar:1.9:compile
[INFO]    +- org.jsoup:jsoup:jar:1.9.2:compile
[INFO]    +- org.seleniumhq.selenium:selenium-api:jar:2.53.1:compile
[INFO]    \- org.seleniumhq.selenium:htmlunit-driver:jar:2.20:compile
[INFO]       +- net.sourceforge.htmlunit:htmlunit:jar:2.20:compile
[INFO]       |  +- xalan:xalan:jar:2.7.2:compile
[INFO]       |  |  \- xalan:serializer:jar:2.7.2:compile
[INFO]       |  +- commons-codec:commons-codec:jar:1.10:compile
[INFO]       |  +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.17:compile
[INFO]       |  +- xerces:xercesImpl:jar:2.11.0:compile
[INFO]       |  |  \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO]       |  +- net.sourceforge.nekohtml:nekohtml:jar:1.9.22:compile
[INFO]       |  +- net.sourceforge.cssparser:cssparser:jar:0.9.18:compile
[INFO]       |  |  \- org.w3c.css:sac:jar:1.3:compile
[INFO]       |  +- commons-logging:commons-logging:jar:1.2:compile
[INFO]       |  \- org.eclipse.jetty.websocket:websocket-client:jar:9.2.15.v20160210:compile
[INFO]       |     +- org.eclipse.jetty:jetty-util:jar:9.2.15.v20160210:compile
[INFO]       |     +- org.eclipse.jetty:jetty-io:jar:9.2.15.v20160210:compile
[INFO]       |     \- org.eclipse.jetty.websocket:websocket-common:jar:9.2.15.v20160210:compile
[INFO]       |        \- org.eclipse.jetty.websocket:websocket-api:jar:9.2.15.v20160210:compile

Because Selenium 3 is coming up and beta 4 could be the official release I think this has to be solved.

Selenium Marionette driver UnreachableBrowserException upon second launch in linux mint

I get same issue and found some info from web.
Please refer:
http://stackoverflow.com/questions/34510794/selenium-marionette-driver-unreachablebrowserexception-upon-second-launch/35852698

I was using selenium 2.53 + firefox driver + testng and everything is ok. Since firefox is upgraded to version 47. I tried to switch to Marionette.

I compiled same test code to jar and run under different OS. I also encountered this issue in linux, Selenium Marionette driver UnreachableBrowserException upon second launch in linux mint.
But no such issue in Windows7 x64.

meanwhile, I also noticed a error when using driver.quit() in windows after running some test

@AfterClass
public void quit() {
    driver.quit();
}

1465889422630 Marionette TRACE conn0 -> [0,57,"quitApplication",{"flags":["eForceQuit"]}]
1465889422631 Marionette TRACE conn0 <- [1,57,null,{}]
[NPAPI 6324] ###!!! ABORT: Aborting on channel error.: file c:/builds/moz2_slave/m-rel-w32-00000000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 2027

org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.

Cannot set property in HTMLUnit Driver for allowing JavaScript to be executed

Thanks for creating this utility. I'm attempting to integrate this into my application but my app requires some JavaScript to be executed. It doesn't appear that I can set this outside of the HTMLUnit Driver direct API. Here is the error I receive:

Caused by: java.lang.UnsupportedOperationException: Javascript is not enabled for this HtmlUnitDriver instance

PhantomJsDriverManager exception

Seems like something broken in this manager.

Manager unpack all files from zip archive and didn't clean output folder.
image

Also method extract from Downloader.class return third-party.txt file as binary file.
image

In accordance to this behavior tests throw exception:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Mar 11, 2016 3:17:46 PM org.openqa.selenium.phantomjs.PhantomJSDriverService <init>
INFO: executable: C:\Users\Aliaksandr_Rasolka\IdeaProjects\sandbox\bin\phantomjs\2.1.1\phantomjs-2.1.1-windows\third-party.txt
Mar 11, 2016 3:17:46 PM org.openqa.selenium.phantomjs.PhantomJSDriverService <init>
INFO: port: 33403
Mar 11, 2016 3:17:46 PM org.openqa.selenium.phantomjs.PhantomJSDriverService <init>
INFO: arguments: [--webdriver=33403, --webdriver-logfile=C:\Users\Aliaksandr_Rasolka\IdeaProjects\sandbox\phantomjsdriver.log]
Mar 11, 2016 3:17:46 PM org.openqa.selenium.phantomjs.PhantomJSDriverService <init>
INFO: environment: {}
Mar 11, 2016 3:18:06 PM org.openqa.selenium.os.UnixProcess checkForError
SEVERE: org.apache.commons.exec.ExecuteException: Execution failed (Exit value: -559038737. Caused by java.io.IOException: Cannot run program "C:\Users\Aliaksandr_Rasolka\IdeaProjects\sandbox\bin\phantomjs\2.1.1\phantomjs-2.1.1-windows\third-party.txt" (in directory "."): CreateProcess error=193, %1 is not a valid Win32 application)

This exception throw only on first run (when you didn't have any phantomjs files in output folder), I think it's because in the method all of the files marked as executable.

SLF4J Error

Hello,

On init project step SLF4J always show error:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Is it ok, or need to be investigated?

using with maven-failsafe-plugin

Hi,

First of all, thanks for sharing your library!
Is it possible to use it with maven-failsafe-plugin? Have you tried this already?

Code always re-downloads PhantomJS driver even when previously downloaded

I am experiencing another problem similar to what you fixed in pull request #24 : Code always re-downloads PhantomJS driver even when previously downloaded.

So, on version 1.4.2, and I am using a MAC-Pro now, the PhantomJS driver download site only has 1 driver binary available, which is 32-bit. Now, when that driver is stored locally on my computer (in the configured location), it is stored in a folder called phantomjs/macosx/2.1.1/phantomjs instead of what I was expecting, which is phantomjs/macosx/2.1.1/mac32/phantomjs . So, it is my belief that the code is not able to detect that a 32-bit version of 32-bit phantom was previously downloaded and therefore, it always tries to re-download it every time.

NOTE: All other configurations I have are configured like i described in pull request #24

Problem with marionette

Code:

                MarionetteDriverManager.getInstance().setup();
                driver = new MarionetteDriver();

Output:

error: Found argument '--webdriver-port' which wasn't expected, or isn't valid in this context

USAGE:
    geckodriver.exe [FLAGS] [OPTIONS]

For more information try --help
Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

Use Proxy

In my company, I wanna use webdrivermanager behind a proxy.

This is the issue, pull request will follow soon.

StringIndexOutOfBoundsException caused by geckodriver

There's a StringIndexOutOfBoundsException while attempting to retrieve the geckodriver:

2016-07-01 11:08:57:330 [ScalaTest-run] DEBUG BrowserManager:65 - Connecting to https://api.github.com/repos/mozilla/geckodriver/releases to check latest MarionetteDriver release
2016-07-01 11:08:57:330 [ScalaTest-run] TRACE BrowserManager:348 - Checking the lastest version of [wires, geckodriver]
2016-07-01 11:08:57:331 [ScalaTest-run] TRACE BrowserManager:349 - Input URL list [https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-arm7hf.tar.gz, https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-linux64.tar.gz, https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-mac.tar.gz, https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-win64.zip, https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0.tar.gz]
2016-07-01 11:08:57:331 [ScalaTest-run] TRACE BrowserManager:355 - URL https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0.tar.gz match with geckodriver
*** RUN ABORTED *** (2 seconds, 933 milliseconds)
  java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
  at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:272)
  at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:103)
  at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:82)
  at safe.SafeBaseSpec.<init>(SafeBaseSpec.scala:87)
  at safe.A_BeforeTestsSpec.<init>(A_BeforeTestsSpec.scala:10)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
  at java.lang.Class.newInstance(Class.java:442)
  at org.scalatest.tools.Runner$.genSuiteConfig(Runner.scala:2644)
  at org.scalatest.tools.Runner$$anonfun$37.apply(Runner.scala:2461)
  at org.scalatest.tools.Runner$$anonfun$37.apply(Runner.scala:2460)
  at scala.collection.immutable.List.map(List.scala:273)
  at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:2460)
  at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1044)
  at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1043)
  at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:2722)
  at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1043)
  at org.scalatest.tools.Runner$.run(Runner.scala:883)

Here are the versions we are using:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.53.1</version>
</dependency>
<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>1.4.5</version>
</dependency>

This has just started today. We traced it down to the last url in the list below where we noticed that the last url has just one hyphen.
The code expects 2 : (at BrowserManager.java getLatest() method)
2016-07-01 10:51:29:867 [ScalaTest-run] TRACE BrowserManager:349 - Input URL list [https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-arm7hf.tar.gz, https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-linux64.tar.gz, https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-mac.tar.gz, https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-win64.zip, https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0.tar.gz]

Unable to setup phantomJS (v1.4.7)

Hello,

I received this error when trying to set up phantomjs:
JDK: 1.7

DEBUG com.gargoylesoftware.htmlunit.WebClient  - Get page for window named '', using WebRequest[<url="https://bitbucket.org/ariya/phantomjs/downloads/", GET, EncodingType[name=application/x-www-form-urlencoded], [], {Accept-Encoding=gzip, deflate, Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8}, null>]
DEBUG com.gargoylesoftware.htmlunit.WebClient  - Load response for GET https://bitbucket.org/ariya/phantomjs/downloads/

java.lang.NoClassDefFoundError: org/apache/http/conn/ssl/NoopHostnameVerifier
    at com.gargoylesoftware.htmlunit.httpclient.HtmlUnitSSLConnectionSocketFactory.buildSSLSocketFactory(HtmlUnitSSLConnectionSocketFactory.java:111)
    at com.gargoylesoftware.htmlunit.HttpWebConnection.configureHttpsScheme(HttpWebConnection.java:601)
    at com.gargoylesoftware.htmlunit.HttpWebConnection.createHttpClient(HttpWebConnection.java:536)
    at com.gargoylesoftware.htmlunit.HttpWebConnection.getHttpClientBuilder(HttpWebConnection.java:498)
    at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:156)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1323)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1240)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:347)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:416)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:519)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:508)
    at io.github.bonigarcia.wdm.PhantomJsDriverManager.getDrivers(PhantomJsDriverManager.java:71)
    at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:209)
    at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:103)
    at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:82)

Phantomjs access denied

It seems like there is an access denied for the PhantomJS Linux driver:

java.lang.RuntimeException: java.io.IOException: Server returned HTTP response code: 403 for URL: https://bbuseruploads.s3.amazonaws.com/fd96ed93-2b32-46a7-9d2b-ecbc0988516a/downloads/396e7977-71fd-4592-8723-495ca4cfa7cc/phantomjs-2.1.1-linux-x86_64.tar.bz2?Signature=xZb1GyZ8J0FuE48fSLKgSHRmvgg%3D&Expires=1464968346&AWSAccessKeyId=AKIAIWY5XSVPZPDQYRQQ&versionId=null&response-content-disposition=attachment%3B%20filename%3D%22phantomjs-2.1.1-linux-x86_64.tar.bz2%22

    at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:224)
    at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:96)
    at io.github.bonigarcia.wdm.BrowserManager.setup(BrowserManager.java:75)
    at io.github.bonigarcia.wdm.BrowserManager$setup.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
    at Components.BrowserFactory.getBrowser(BrowserFactory.groovy:96)
    at Components.BrowserFactory$getBrowser.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at Components.WebDriverHolder.setDriver(WebDriverHolder.groovy:13)
    at Components.WebDriverHolder$setDriver.callStatic(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:53)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:157)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:165)
    at com.auto1.BaseTest.setUpBrowser(BaseTest.groovy:26)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:514)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:215)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:589)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
    at org.testng.TestRunner.privateRun(TestRunner.java:782)
    at org.testng.TestRunner.run(TestRunner.java:632)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
    at org.testng.SuiteRunner.run(SuiteRunner.java:268)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
    at org.testng.TestNG.run(TestNG.java:1064)
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:74)
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:121)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: https://bbuseruploads.s3.amazonaws.com/fd96ed93-2b32-46a7-9d2b-ecbc0988516a/downloads/396e7977-71fd-4592-8723-495ca4cfa7cc/phantomjs-2.1.1-linux-x86_64.tar.bz2?Signature=xZb1GyZ8J0FuE48fSLKgSHRmvgg%3D&Expires=1464968346&AWSAccessKeyId=AKIAIWY5XSVPZPDQYRQQ&versionId=null&response-content-disposition=attachment%3B%20filename%3D%22phantomjs-2.1.1-linux-x86_64.tar.bz2%22
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1839)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
    at java.net.URL.openStream(URL.java:1038)
    at org.apache.commons.io.FileUtils.copyURLToFile(FileUtils.java:1460)
    at io.github.bonigarcia.wdm.Downloader.download(Downloader.java:84)
    at io.github.bonigarcia.wdm.BrowserManager.manage(BrowserManager.java:217)
    ... 47 more

Chrome Driver 2.18 IllegalStateException

Interestingly, with the new release of Chrome Driver (2.18), the path to the driver executable is not set automatically by webdrivermanager anymore. When running:

ChromeDriverManager.getInstance().setup();
driver = new ChromeDriver(options);

I run into an IllegalStateException:

Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
    at com.google.common.base.Preconditions.checkState(Preconditions.java:197)
    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:109)
    at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32)
    at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137)
    at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:290)
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:148)
    at co.quantent.engine.SeleniumDriver.<init>(SeleniumDriver.java:33)
    at co.quantent.engine.Tester.main(Tester.java:11)

However, if I specify I want Chrome Driver 2.17 instead of 2.18, like so:

ChromeDriverManager.getInstance().setup("2.17");
driver = new ChromeDriver(options);

Everything runs fine! Would you happen to know what's going on?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.