0

我一直在使用 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 代码。

4

2 回答 2

0

我不得不放弃对 PhantomJS 使用 WebDriverManager,而是使用带有无头 chrome 的 chrome 驱动程序。这解决了我面临的问题,最后我能够通过 Jenkins 进行测试而没有任何问题。

于 2018-12-30T06:29:15.383 回答
0

我有同样的问题,所以我决定通过设置如下值来使用 ChromeOptions 类而不是 PhantomJS 驱动addArguments程序--headless

WebDriverManager.chromedriver().setup();
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--headless");
            options.addArguments("--disable-gpu");
            driver = new ChromeDriver(options);
于 2021-01-07T07:33:52.410 回答