如何在没有ChromeDriver.exe的Maven中使用selenium-chrome-driver

Gob*_*obi 6 selenium google-chrome maven selenium-webdriver maven-dependency

我为Opening Chrome添加了以下依赖项和代码,但浏览器未打开.

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>2.50.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我的代码: -

package example;
import org.openqa.selenium.WebDriver;`
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class DepChrome {

    @Test
    public void testBrowser() {
    WebDriver driver = new ChromeDriver();
    driver.manage().window().maximize();
    }
}
Run Code Online (Sandbox Code Playgroud)

Ney*_*mal 13

有两种方法。

  1. 最简单的方法是从此位置下载chromedriver

    下载Chrome Web驱动程序

    然后在您的项目中创建一个源文件夹。(例如:BrowserDrivers),并将下载的库添加到其中。

    然后,使用setProperty命令在自动化脚本中设置chrome驱动程序路径,如下所示。

            System.setProperty("webdriver.chrome.driver", "BrowserDrivers/chromedriver.exe"); 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 但是还有另一种方式。这更适合于Maven构建。将以下依赖项添加到POM.xml文件中。

    有2个依赖项。一个用于Chrome驱动程序。但是要使用chrome驱动程序依赖性,您必须添加webdrivermanager依赖性。浏览器驱动程序是强制性依赖项。因此,总是必须将它们都添加。有关更多详细信息,请参考此链接Github Webdriver manager链接

    <dependency>
         <groupId>io.github.bonigarcia</groupId>
         <artifactId>webdrivermanager</artifactId>
         <version>2.2.5</version>
    </dependency>
    
    Run Code Online (Sandbox Code Playgroud)

    并添加chrome驱动程序依赖项。

    <dependency>
         <groupId>org.seleniumhq.selenium</groupId>
         <artifactId>selenium-chrome-driver</artifactId>
         <version>2.50.0</version>//Your chrome driver version
    </dependency>
    
    Run Code Online (Sandbox Code Playgroud)

    然后在自动化脚本中使用此行而不是System.setProperty命令来声明chrome驱动程序。

    ChromeDriverManager.getInstance().setup();
    
    Run Code Online (Sandbox Code Playgroud)

    更新: 不建议使用ChromeDriverManager,请改用:

    import static io.github.bonigarcia.wdm.DriverManagerType.CHROME;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import io.github.bonigarcia.wdm.WebDriverManager;
    
    WebDriverManager.getInstance(CHROME).setup();
    
    Run Code Online (Sandbox Code Playgroud)


Shu*_*ain 8

您的依赖项很好,但您还需要提供chrome二进制文件的路径

        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>3.0.0</version>
<!--            <scope>test</scope> -->
        </dependency>
Run Code Online (Sandbox Code Playgroud)

从selenium网站下载chrome二进制文件,如下所示: - http://chromedriver.storage.googleapis.com/index.html?path=2.21/

现在提供二进制到selenium的路径: -

WebDriver driver = null;
WebDriverManager.chromedriver().version("77.0.3865.40").setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized"); 
options.addArguments("enable-automation"); 
options.addArguments("--no-sandbox"); 
options.addArguments("--disable-infobars");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--disable-browser-side-navigation"); 
options.addArguments("--disable-gpu"); 
driver = new ChromeDriver(options); 
driver.get("https://www.google.com/"); 
Run Code Online (Sandbox Code Playgroud)

还有一件事需要注意.如果您使用的是Windows,则使用反斜杠\\,如果您使用的是mac或linux,则使用正斜杠//设置路径.

希望它能帮到你:)

  • 这与手动下载chromedriver并改变自己有什么不同?如果我们仍然需要手动设置它,那么使用Maven有什么意义呢? (9认同)
  • 您可以使用https://github.com/Ardesco/selenium-standalone-server-plugin下载二进制文件作为Maven构建的一部分. (5认同)

小智 6

检查下面的代码 -

package example;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
import io.github.bonigarcia.wdm.WebDriverManager;
public class DepChrome  {
    @Test
    public void testBrowser() {
        WebDriver driver;
        WebDriverManager.chromedriver().setup();
        driver = new ChromeDriver();        
        driver.get("https://google.com");
        String title = driver.getTitle();
        System.out.println(title);      
        driver.quit();      
    }
}
Run Code Online (Sandbox Code Playgroud)