【发布时间】:2016-12-03 12:57:36
【问题描述】:
使用 Selenium w Java 和测试 NG(POM 格式)将所有内容从非静态切换到静态并相应地更改所有内容,得到 NullPointerException。当一切都不是静态的时候它可以工作,但是让一切都成为静态需要更少的代码,所以我更喜欢这样。
这是我的代码.. 由于某种原因尝试粘贴我的代码时,它没有将导入语句识别为代码,所以我只是没有包含它们,但请放心,所有需要的东西都已导入! :)
Package pages;
public class locationPage {
WebDriver driver;
static @FindBy (id="btn_bogota") WebElement chooseBogota;
static @FindBy (id="btn_medellin") WebElement chooseMedellin;
static @FindBy (xpath="//title") WebElement pageTitle;
public locationPage (WebDriver driver){
this.driver=driver;
PageFactory.initElements(driver, this);
}
public static void chooseLocation (String location) {
if (location.equals("Bogota"))
{
chooseBogota.click();
}
else if (location.equals("Medellin")){
chooseMedellin.click();
}
}
}
Package testcases;
public class selectLocation {
WebDriver driver;
@BeforeClass
public void setup() throws InterruptedException{
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://dev01.juanregala.com.co/");
//Generating Alert Using Javascript Executor
JavascriptExecutor javascript = (JavascriptExecutor) driver;
javascript.executeScript("alert('Select Location');");
Thread.sleep(2000);
driver.switchTo().alert().accept();
}
@AfterTest
public void quit(){
driver.quit();
}
@Test (priority=0)
public void location(){
locationPage.chooseLocation("Medellin");
}
}
它不断给我一个 NullPointerException 指的是
chooseMedellin.click();
和
locationPage.chooseLocation("Medellin");
我不确定如何描述我的问题:(请帮忙!
【问题讨论】:
-
另外......我想你可能不理解 TestNG 中
@AfterTest注释的使用。这不是在每个测试方法之后运行,而是在该特定 TestNG 套件的<test>节点中的所有测试之后运行。我认为您实际上想要@BeforeMethod和@AfterMethod注释,它们分别在 each@Test方法之前和之后运行。请参阅 TestNG 文档:testng.org/doc/documentation-main.html -
是的,我在发布问题后立即更改了它!谢谢你承认:)
标签: eclipse selenium static webdriver pom.xml