最近學習使用TestNG寫測試腳本,仿照的是乙醇的腳本,由於火狐沒有裝到默認路徑,運行時總是報找不到路徑的錯誤。QQ羣裏問了半天也沒人回答,只好自己倒騰,最終調試通過的代碼如下。
package com.testgoogle;
import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.*;
public class GoogleTest {
WebDriver driver;
@BeforeTest
public void setup(){
System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
}
@Parameters({"browser"})
@BeforeTest
public void setupBrowser(String browser){
if (browser.equals("firefox")){
driver = new FirefoxDriver();
} else {
driver = new ChromeDriver();
}
}
@Parameters({ "url", "keyword" })
@Test
public void search(String url, String keyword) {
driver.get(url);
WebElement element = driver.findElement(By.name("q"));
element.sendKeys(keyword);
element.submit();
Assert.assertTrue(driver.getTitle().contains(keyword), "Title is wrong!");
}
}
調試過程中發現system.setproperty()必須放在@BeforeTest的一個方法裏,不能直接貼代碼也不能放在@BeforeClass之類的位置。當然放在@Test的方法裏也可以,但是不太規範。