Java 将显式等待作为所有页面的通用方法添加到POM中

Java 将显式等待作为所有页面的通用方法添加到POM中,java,selenium,selenium-webdriver,pageobjects,Java,Selenium,Selenium Webdriver,Pageobjects,我正在使用POM,在我的TestBase类中声明了一些常见的操作,例如,click、checkText等。我在从一个步骤过渡到另一个步骤时遇到问题。为了克服这个问题,我想添加显式等待,并且我想把它放在TestBase类的公共操作中。我写的代码是 对于测试基类 public WebDriverWait wait = new WebDriverWait(webDriver,10); 以及在特定页面上 landingPage.wait.until(ExpectedConditions.visibil

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

对于测试基类

public WebDriverWait wait = new WebDriverWait(webDriver,10);
以及在特定页面上

landingPage.wait.until(ExpectedConditions.visibilityOf(WebElement)
由于TestBase类,我得到了错误
java.lang.NullPointerException
。可能是我多次使用WebDriver?我不确定这一点,因为我尝试了很多可能性,但仍然失败了。
请帮帮我。

我能猜出你的问题。您正在初始化基中的wait变量。这里的问题是webDriver在等待初始化时未初始化。因此,不要初始化等待webdriver变量初始化。您可以在基类中声明它,但不要像,
那样初始化它
公共WebDriverWait等待

您可以在WebDriver初始化后初始化它,如,
WebDriver-WebDriver=newfirefoxdriver()

wait=newwebdriverwait(webDriver,60)

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

导入你的浮华

公共类TestBaseClass{

公共网络驱动程序

//定义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
}


}

请发布您的
TestBase
课程。您的项目结构是什么?可以添加一些关于测试基类和调用classpublic void TestPausePageUntildDocumentIsReady()的代码吗?抛出异常{((JavascriptExecutor)getWebDriver()).executeScript(“return document.readyState”).equals(“complete”);testPausePage();}公共WebDriver getWebDriver(){return WebDriver;}public WebDriverWait wait=新的WebDriverWait(webDriver,10);public void testPausePage()引发异常{Thread.sleep(1500);}可能的重复