Драйвер PhantomJS не вызывается при использовании WebDriverManager для моего кода Java

Я использовал WebDriverManager для управления драйверами для моего файла класса, который, в свою очередь, используется в других файлах класса для тестирования с использованием Selenium.

Я использую maven для сборки, ниже приведено содержимое моего файла pom.xml:

<dependencies>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>3.8.1</version>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>org.seleniumhq.selenium</groupId>
   <artifactId>selenium-java</artifactId>
   <version>3.12.0</version>
  </dependency>
  <dependency>
   <groupId>org.testng</groupId>
   <artifactId>testng</artifactId>
   <version>6.9.8</version>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>io.github.bonigarcia</groupId>
   <artifactId>webdrivermanager</artifactId>
   <version>3.1.1</version>
   <scope>test</scope>
  </dependency>
</dependencies>

И ниже файл класса, который я использую для вызова драйверов:

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.annotations.BeforeTest;
    import io.github.bonigarcia.wdm.WebDriverManager;
    import io.github.bonigarcia.wdm.PhantomJsDriverManager;

    public abstract class GetDriver {

    // declare driver
    public WebDriver driver;

    // Assign the driver
    @BeforeTest
    public void WebdriverSetUp() {

        WebDriverManager.phantomjs().setup();
        driver = new PhantomJsDriver();
    }
   }

Теперь проблема в том, что всякий раз, когда я пытаюсь добавить драйвер phantomjs, используя две следующие строки:

WebDriverManager.phantomjs().setup();
driver = new PhantomJSDriver();

Это дает мне ошибку, "PhantomJSDriver не может быть преобразован в тип". Затмение предлагает мне сделать любое из следующих исправлений:

Create class 'PhantomJSDriver' Change to 'WebDriver' (org.openqa.selenium) "Change to 'PhantomJsDriverManager' (io.github.bonigarcia.wdm)"

Когда я пытаюсь выбрать третье исправление, которое должно измениться на PhantomJsDriverManager, появляется другая ошибка

Type mismatch: cannot convert from PhantomJsDriverManager to WebDriver

Для вышеуказанной ошибки снова, Eclipse предлагает два исправления: Add cast to 'WebDriver' Change type of 'driver' to 'PhantomJsDriverManager'

Когда я выбираю второй вариант сверху, код меняется на

public abstract class GetDriver {

// declare driver
public PhantomJsDriverManager driver;

// Assign the driver
@BeforeTest
public void WebdriverSetUp() {

    WebDriverManager.phantomjs().setup();
    driver = new PhantomJsDriverManager();
    }
}

После вышеуказанного изменения я получаю сообщение об ошибке: "Конструктор PhantomJsDriverManager() не отображается".

Эта проблема происходит только для драйвера PhantomJs. Я попробовал с Chrome Driver, и он работал как шарм. Пожалуйста, помогите мне узнать, как я могу использовать webdrivermanager, чтобы я мог использовать драйвер PhantomJS для безголового выполнения моего кода Selenium.

2 ответа

Мне пришлось отказаться от использования WebDriverManager для PhantomJS и вместо этого использовать драйвер Chrome с Chrome без головы. Это решило проблемы, с которыми я столкнулся, и, наконец, я смог провести тестирование через Jenkins без каких-либо проблем.

У меня была такая же проблема, поэтому я решил использовать класс ChromeOptions вместо драйвера PhantomJS, установив значение addArgumentsв качестве --headlessкак показано ниже:

      WebDriverManager.chromedriver().setup();
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--headless");
            options.addArguments("--disable-gpu");
            driver = new ChromeDriver(options);
Другие вопросы по тегам