我一直在使用Firefox来运行我的测试用例。但现在我想使用Chrome。我想在类级别初始化chrome,就像我使用Firefox一样。但是在类级别设置系统属性会出错,我该怎么办?使用属性文件将起作用,如果是,如何??
public class BaseClass {
System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver");
public static WebDriver driver = new ChromeDriver();
public void test(){
driver.get("http://asdf.com");
----
---
}
}
答案 0 :(得分:3)
你用这样的静态初始化程序块冷却它:
public class BaseClass {
static {
System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver");
}
protected WebDriver driver = new ChromeDriver();
@Test
public void test(){
driver.get("http://asdf.com");
}
}
由于您尚未说明您使用的是哪种测试框架,您可能会在TestNG(我建议无论如何)中这样做:
public class BaseClass {
@BeforeSuite
public void setupChromeDriver() {
System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver");
}
public static WebDriver driver = new ChromeDriver();
public void test(){
driver.get("http://asdf.com");
}
}
@BeforeSuite注释确保在运行测试套件的第一次测试之前执行该方法,所以这应该足够早。
答案 1 :(得分:1)
请以这种方式声明..它应该有效
public class abcd {
public static WebDriver driver;
@BeforeMethod
public static void start()
{
File file = new File("D:/abcd/chromedriver.exe");
System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
driver = new ChromeDriver();
}
}
它应该工作..我有同样的错误。但是当你用这种方式初始化它就有效。请尝试告诉我们。
如果你不想关闭浏览器会话,请尝试使用@BeforeClass和@AfterClass。它在整个测试之前运行一次
答案 2 :(得分:0)
System.setProperty("webdriver.chrome.driver","/home/Desktop/chrome32/chromedriver");
这一行应该进入一个方法,你不能直接在你的类体内使用它
答案 3 :(得分:0)
为什么不尝试在基类的@BeforeTest方法中初始化Chrome驱动程序。我所做的就是这样:
public class BaseTest {
/*
*
* This is a base class for all Test classes that we'll create to write tests in.
* A test-data set will belong to one/set of tests.
*/
protected WebDriver driver;
protected CustomLogger logger;
protected DependencyChecker dcheck;
protected TestDataReader td;
protected PropReader p;
protected HashMap<String, String> testDataMap;
private String testDataFilePath;
protected BaseTest(String testDataFilePath)
{
this.testDataFilePath = testDataFilePath;
p = new PropReader("environmentConfig.properties");
}
@BeforeTest(description="Preparing environment for the test..")
public void prepareTest()
{
//other code
System.setProperty(p.get("chromeDriverName"),p.get("chromeDriverPath"));
File chrome = new File("/usr/bin/google-chrome");
ChromeOptions options = new ChromeOptions();
options.setBinary(chrome);
logger.log("Launching browser..");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
//other code
}
}
我不知道你为什么要在课堂上初始化它。上面的代码完全正常。