Автоматизация страницы углового входа с использованием селена webdriver - PullRequest
0 голосов
/ 12 декабря 2018

Я автоматизировал страницу входа в угловое приложение с помощью веб-драйвера selenium, и мне нужно какое-то решение для проверки

Я попытался идентифицировать элемент и обнаружил, но, проверяя поля для входа, он проходит мимоесли условие

вот мой код

un = driver.findElement(By.xpath("//*[@id='mat-input-0']"));

un.sendKeys("");

Thread.sleep(500);

boolean une = un.getText().isEmpty();

pw = driver.findElement(By.xpath("//*[@id='mat-input-1']"));

pw.sendKeys("Password123");

Thread.sleep(1000);

boolean pwe = pw.getText().isEmpty();

//System.out.println("text--->"+un.getText());

//System.out.println(pw);

//WebElement element=pw;

//String u = un.getText();

//String p = un.getText();

//if(un!=null && pw!=null && (!un.getText().isEmpty()&&!pw.getText().isEmpty()))
//if(un!=null && pw!=null && (une!=true && pwe!=true))
//if((un!=null && un.getText()!=null &&  !un.getText().isEmpty()) && (pw!=null && pw.getText()!=null && !pw.getText().isEmpty()))

if(un!=null && pw!=null && (une=false) && (pwe=false))

{ 
    driver.findElement(By.xpath("//button[@class='eta-float mat-raised-button mat-primary']")).click();

    Thread.sleep(1000);

    //logout menu
    driver.findElement(By.xpath("/html/body/app-root/div/mat-toolbar/mat-toolbar-row/button[3]")).click();

    Thread.sleep(2000);

    //logout option
    driver.findElement(By.xpath("/html/body/div/div[2]/div/div/div/button[1]"));

    driver.quit();
}
else
{
    System.out.println("Please provide valid credentials!");
}

    everytime only else part is executed

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Есть несколько проблем с вашим кодом:

  1. un и pw никогда не будет null.Если .findElement() не найдет элемент, он выдаст ElementNotFoundException, а не вернет null, поэтому вы можете пропустить эти условия.

  2. Не проверять, есть ли полепустой.Там действительно нет смысла.Даже если оба поля НЕ пусты и имя пользователя или пароль неверны, вам все равно придется иметь дело с неудачным входом в систему.Пропустите попытку проверить пустые поля и вместо этого попытайтесь выполнить вход в систему, а если произойдет сбой (вы можете узнать это, найдя какое-либо сообщение об ошибке входа в систему), то не пройдите тест.

  3. Если вы ищетедля элемента по идентификатору используйте By.id() NOT By.xpath().

  4. Предпочитайте CSS-селекторы, а не XPath, потому что они быстрее, лучше поддерживаются и легче читаются.

  5. Использовать Thread.sleep() - плохая практика.Сделайте поиск в Google, чтобы увидеть причины.Вместо этого используйте WebDriverWait.

  6. Не используйте XPath с более чем 3 уровнями, которые начинаются с HTML.Скорее всего, они сломаются при любом небольшом изменении в HTML.

  7. Вы должны использовать TestNG или JUnit для проверки и регистрации.Не пишите свои собственные или просто пишите сообщения на консоль.Это не поддерживается.

Ваш код должен выглядеть примерно так:

String username = "";
String password = "Password123";

driver.findElement(By.id("mat-input-0")).sendKeys(username);
driver.findElement(By.id("mat-input-1")).sendKeys(password);
driver.findElement(By.cssSelector("button.eta-float.mat-raised-button.mat-primary")).click(); // I'm assuming this is the login button?
// check for a successful login message
if (driver.findElements(loginSuccessMessageLocator).isEmpty())
{
    // login success message NOT found
    // fail the test
}
else
{
    // login success message found
    driver.findElement(By.xpath("/html/body/app-root/div/mat-toolbar/mat-toolbar-row/button[3]")).click();
    driver.findElement(By.xpath("/html/body/div/div[2]/div/div/div/button[1]")); // this doesn't do anything... is it supposed to click?
}
0 голосов
/ 12 декабря 2018

В вашей программе есть логическая ошибка.Вместо = вы должны использовать ==

if(un!=null && pw!=null && (une=false) && (pwe=false)) // assignment operator
if(un!=null && pw!=null && (une==false) && (pwe==false)) // comparison operator

, так что это может привести к тому, что условие будет всегда не выполнено, и, следовательно, else часть всегда выполняет

для WebElement мыможно использовать, как показано ниже, если оба элемента отображаются, и они содержат текст

if(un.isDisplayed()&&pw.isDisplayed()&&(!une) && (!pwe))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...