在将WebDriverManager用于我的Java代码时,没有调用PhantomJS驱动程序

时间:2018-12-27 15:53:16

标签: 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无法解析为类型”。 Eclipse建议我进行以下任何修复:

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驱动程序,它的工作原理很吸引人。请帮助我如何使用webdrivermanager,以便可以将PhantomJS驱动程序用于无头执行我的Selenium代码。

2 个答案:

答案 0 :(得分:0)

我不得不放弃将WebDriverManager用于PhantomJS,而是将chrome驱动程序与无头chrome一起使用。这样就解决了我面临的问题,最后我可以通过Jenkins进行测试,而没有任何问题。

答案 1 :(得分:0)

我遇到了同样的问题,所以我决定使用 ChromeOptions 类而不是 PhantomJS 驱动程序,方法是将 addArguments 的值设置为 --headless,如下所示:

WebDriverManager.chromedriver().setup();
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--headless");
            options.addArguments("--disable-gpu");
            driver = new ChromeDriver(options);