使用Selenium w Java和Test NG(POM格式)将所有内容从非静态切换为静态,并相应地更改所有内容,获得NullPointerException。当所有东西都不是静态的时候它就工作了,但是让所有东西都静态需要更少的代码,所以我更喜欢这样。当我将所有方法都改为静态时,发生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");
我真的不知道怎么回事,来形容我的问题: (请帮忙!
也...我想你可能不理解使用'@ AfterTest'注释TestNG中的。在每种测试方法之后,* not *运行,而是在特定TestNG套件的''节点中的所有测试之后运行。我认为你实际上需要'@ BeforeMethod'和'@ AfterMethod'注释,它们分别在每个**'@ Test'方法之前和之后运行。请参阅TestNG文档:http://testng.org/doc/documentation-main.html –
是的,我发布这个问题后立刻改变了它!非常感谢您认识到:) – daniyalmistry