繁体   English   中英

无法在Selenium网络驱动程序(Java)中启动Chrome

[英]Unable to start Chrome in Selenium Web-driver (Java)

我正在通过Java和TestNG使用selenium webdriver。

我刚刚尝试了以下代码:(用于启动chrome浏览器),

package testng1package;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.AssertJUnit;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.testng.annotations.AfterTest;


public class TestNGFile {

    //using firefox
    //public WebDriver driver = new FirefoxDriver() ;

    //using Chrome
    System.setProperty("webdriver.chrome.driver", "C://Users//Roey//Desktop//chromedriver.exe");
    public WebDriver driver = new ChromeDriver();   
    String baseurl = "http://newtours.demoaut.com/" ;

    @BeforeTest
    public void StartBrowser() {

    }

    @Test
    public void Test1() {

        driver.get(baseurl);
        String expectedTitle = "Welcome: Mercury Tours" ; 
        String actualTitle = driver.getTitle();
        AssertJUnit.assertEquals(actualTitle , expectedTitle) ;
        driver.quit();        
    }

    @AfterTest
    public void terminateBrowser() {
        driver.quit();              
    }

}

测试包含system.setproperty上的错误,并说:

这行有多个标记
-令牌语法错误,构造放置错误
-令牌语法错误,请删除这些令牌

如果我将这段代码行剪切并粘贴到@test中-可以,但是我想从@BeforeTest或开头使用它(因为现在是这样)。

编辑:

好的,所以首先用一种方法设置驱动程序。
其次,Windows上chromedriver的路径将需要反斜杠,而不是正斜杠。

这可行。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;   

public class TestNGFile {
    @Test
    public void Test1() {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Roey\\Desktop\\chromedriver.exe");
        WebDriver chromeDriver = new ChromeDriver();
        String baseurl = "http://newtours.demoaut.com/" ;
        chromeDriver.get(baseurl);
        String expectedTitle = "Welcome: Mercury Tours" ;
        String actualTitle = chromeDriver.getTitle();
        AssertJUnit.assertEquals(actualTitle , expectedTitle) ;
        chromeDriver.quit();
    }
}
    System.setProperty("webdriver.chrome.driver", "C:/Users/dell/Downloads/chromedriver.exe");
    WebDriver d = new ChromeDriver();
    d.get("Any URL");

注意-在chromedriver.exe的位置可以使用单斜杠。希望对您来说效果很好。

我正在使用Eclipse。 我将chromedriver.exe放在项目工作区中,因此您不需要System.setProperty的完整路径,因为Selenium知道要查找的位置。 然后,将其设置在@Before

@Before
public void setUp() {
    System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
    driver = new ChromeDriver();
}

如果使用Maven,则将这2个依赖项添加到pom.xml中,就可以了,现在可以删除System.setProperty行。 使用这种技术,项目的硬编码方法更少了。

 <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>3.3.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.6.2</version>
        <scope>test</scope>
    </dependency>

另外,您需要将此行添加到您的预测中。

        WebDriverManager.chromedriver().setup();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM