在POM中添加显式等待,将其作为所有页面的常用方法

时间:2017-05-31 11:36:34

标签: java selenium selenium-webdriver pageobjects

我正在使用POM,在我的TestBase类中声明了一些常见的操作,例如click,checkText等。从一个步骤过渡到另一个步骤时,我遇到了问题。为了克服这个问题,我想添加显式等待,我想把它放在TestBase类的常用操作中。我正在编写代码,

对于测试基类,

public WebDriverWait wait = new WebDriverWait(webDriver,10);

在特定页面上;

landingPage.wait.until(ExpectedConditions.visibilityOf(WebElement)

由于TestBase类,我收到错误java.lang.NullPointerException。可能是我多次使用WebDriver?我不确定,因为我尝试了很多可能但仍然失败了。 请帮帮我。

2 个答案:

答案 0 :(得分:0)

我能猜出你的问题。您正在基础中初始化您的等待变量。这里的问题是webDriver在等待初始化时没有初始化。因此,在初始化webdriver变量之前不要初始化等待。您可以在基类中声明它,但不要初始化类似,
     public WebDriverWait wait;

您可以在WebDriver初始化之后初始化它,例如,
    WebDriver webDriver=new FirefoxDriver();
    wait =new WebDriverWait(webDriver, 60);

答案 1 :(得分:-1)

我想你可以在你的基类中使用thread.sleep,如下所示。它还将等待参数中以毫秒为单位指定的给定时间。

导入yourPOMPage;

public class TestBaseClass {

公共WebDriver驱动程序;

//定义obj变量

yourPOMPage obj;

public void methodName()抛出InterruptedException {

        obj = new yourPOMPage(driver);//initialized the obj
        Thread.sleep(5000);
        obj.MethodofPOMPage();  // MethodofPOMPage u must have to create in POM Page

}

}