在Java中使用pagefactory和selenium 3,我创建了一个简单的脚本来登录和注销。我已使用以下内容进行显式等待:
public void verifyElementisEnabled( WebElement wElement,String sFieldName){
printCurrentDate();
try{
wait.until(ExpectedConditions.elementToBeClickable(wElement));
wait.until(ExpectedConditions.visibilityOf(wElement));
**//Thread.Sleep("1000") - Script works if this line is uncommented**
if (wElement.isEnabled()==true)
System.out.println(sFieldName + " is enabled");
printCurrentDate();
}catch (Exception e){
printCurrentDate();
System.out.println(sFieldName + " is NOT enabled");
Assert.fail(sFieldName + " Field not found", e);
}
}
我面临的问题是,对于Logout,在点击之后,页面会暂时刷新一秒,但不会显示相应的“登录”页面,而是保留在同一页面中。点击之前我没有看到任何异常的异常。以下是代码段。
但是,如果我在上面的" VerifyElementisEnabled方法中使用" Thread.Sleep(1000)" (小于1000的任何内容都不起作用),则所有这些都有效
@Test
public void Test1(){
LoginPage objLogin = new LoginPage(driver);
objLogin.setUserName();
objLogin.setPwd();
HomePage objHome = objLogin.clickLoginButton();
objHome.confirmHomePage();
objLogin = objHome.SignOut();
objLogin.verifyLoginPage();
}
public LoginPage SignOut(){
commonLib.click_webelement(SignOut,"Sign Out");
commonLib.waitForPagetoLoadJS_Ajax();
return new LoginPage(driver);
}
等待JS和Ajax方法,只需验证document.ready状态是否完整。
我在这里提出的想法,我们将非常感谢任何建议或帮助。
谢谢!
更新:
public void confirmHomePage(){
commonLib.verifyElementisEnabled(titleText, "User Search");
}
最终更新: 看起来上面给出的父类Test1有问题。执行测试后,webdriver返回上一页"登录"。在这里,我回到了"登录页面"类。这阻碍了页面导航。我更新了Test1,如下所示:
public void afcDealerTest1(){
LoginPage objLogin = new LoginPage(driver);
objLogin.enterLoginCredentials();
HomePage objHome = objLogin.clickLoginButton();
objHome.confirmHomePage();
objHome.SignOut(); //<-- Refer to this line
objLogin.verifyLoginPage();
}
还删除了所有方法中的所有thread.sleep,除了JS Ready状态为200ms睡眠完成。它似乎工作正常。
感谢大家的帮助。
答案 0 :(得分:0)
通过以下修改修正了它:
在:
@Test
public void Test1(){
LoginPage objLogin = new LoginPage(driver);
objLogin.setUserName();
objLogin.setPwd();
HomePage objHome = objLogin.clickLoginButton();
objHome.confirmHomePage();
objLogin = objHome.SignOut();
objLogin.verifyLoginPage();
}
修正:
@Test
public void Test1(){
LoginPage objLogin = new LoginPage(driver);
objLogin.setUserName();
objLogin.setPwd();
HomePage objHome = objLogin.clickLoginButton();
objHome.confirmHomePage();
objHome.SignOut();
objLogin.verifyLoginPage();
}