Драйвер 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);