Драйвер Selenium Phantom js - java .lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.find (Ljava / lang / String;) Ljava / lang / String; - PullRequest
1 голос
/ 05 февраля 2020

Я устал внедрять драйвер Phantom js в тесты Selenium, но он выдает мне эту ошибку. java .lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.find (Ljava / lang / String;) Ljava / lang / String; Библиотека фантомов https://mvnrepository.com/artifact/org.jboss.arquillian.extension/arquillian-phantom-driver версия 1.2.1.1 и Java версия 1.8 Реализация выглядит следующим образом:

    if( driver == null )
    {
        if( which == CHROME )
        {
            System.setProperty("webdriver.chrome.driver", which);
            driver = new ChromeDriver();
        }
        else if ( which == PHANTOM )
        {
            System.setProperty("webdriver.phantomjs.driver", which);
            driver = new PhantomJSDriver();
        }
    }

Что я должен сделать, чтобы заставить его работать? Правильно ли это фантомная библиотека? Спасибо.

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Для PhantomJSDriver (GhostDriver) необходимо добавить следующую зависимость Maven:

<dependency>
    <groupId>com.github.detro</groupId>
    <artifactId>phantomjsdriver</artifactId>
    <version>1.4.0</version>
</dependency> 

Кроме того, обновите строку System.setProperty, указав абсолютный путь к двоичному файлу phantomjs следующим образом:

File path=new File("C:\\path\\\to\phantomjs-x.x.x-windows\\bin\\phantomjs.exe");
System.setProperty("phantomjs.binary.path",path.getAbsolutePath());
WebDriver driver= new PhantomJSDriver();
driver.navigate().to("https://www.google.co.in/");

Примечание: Вы можете очистить свой проект в IDE и использовать только зависимость Selenium-Java Clients.

1 голос
/ 05 февраля 2020

Этот подход работает для меня:

  1. скачать драйвер: https://phantomjs.org/download.html

  2. добавить эту зависимость:

    <dependency>
        <groupId>com.codeborne</groupId>
        <artifactId>phantomjsdriver</artifactId>
        <version>1.4.4</version>
        <scope>compile</scope>
    </dependency>
    
  3. добавить к вашему коду:

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("phantomjs.binary.path", "pathToBin");
    driver = new PhantomJSDriver(capabilities);
    

ПРИМЕЧАНИЕ: я использую Selenium версии 3.8.1

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-remote-driver</artifactId>
        <version>3.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-api</artifactId>
        <version>3.8.1</version>
    </dependency>
...