Selenium - WebElement.Click (), страница обновляется, но не загружается - PullRequest
0 голосов
/ 22 мая 2018

Используя pagefactory и selenium 3 с Java, я создал простой скрипт для входа и выхода.Я использовал приведенное ниже для явного ожидания:

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);
    }       
}

Проблема, с которой я сталкиваюсь, заключается в том, что для выхода из системы после нажатия кнопки webelement страница на короткое время обновляется, но соответствующая страница входа не отображаетсявместо этого он остается на той же странице.Я не вижу никаких исключений для weblement до клика.Ниже приведен фрагмент кода.

Однако все это работает, если я использую "Thread.Sleep (1000)" в приведенном выше методе VerifyElementisEnabled (не работает больше 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, указанного выше, были проблемы. После выполнения тестов веб-драйвер возвращался к предыдущемустраница "Вход в систему". Здесь я возвращал класс "Страница входа". Это мешало навигации по страницам. Я обновил 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();
}

Также удалил все темы. Спит во всехметоды, за исключением состояния JS Ready как завершенного со сном 200 мс. Кажется, он работает нормально.

Спасибо всем за помощь.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Исправлено этой модификацией ниже:

До:

    @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();
}
0 голосов
/ 23 мая 2018

Это проблема синхронизации.Кажется, элемент получает разрешение через некоторое время, минуя ваши явные условия.Вам следует подождать, пока элемент не станет активным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...