Selenium WebDriver: сценарий входа не работает

Я пытаюсь создать сценарий входа в систему, в котором я пытаюсь проверить, был ли вход успешным или нет. Однако он генерирует исключение NoSuchElementException. Любые входные данные для исправления сценария будут очень полезны.

Ниже приведен класс страницы, из которого я вызываю метод входа:

package abhi;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.By;

public class PageClass 
{

    //Declare the WebDriver
    WebDriver driver;
    //Declare the Login Page Elements
    By Username = By.name("username");
    By Password = By.name("password");
    By LoginButton = By.className("ui-button-text");
    By OnlineCatalog = By.linkText("Online Catalog");
    By ErrorMessage = By.className("messageStackError");

    //Create the constructor with the same name as that of the Page Class
    public PageClass (WebDriver driver)
    {
        this.driver=driver;
    }

    //Create Login Method

    public void Login (String Uname, String Pwd)           
    {
        driver.findElement(Username).sendKeys(Uname);
        driver.findElement(Password).sendKeys(Pwd);
        driver.findElement(LoginButton).click();            
    }
 }

И ниже приведен тестовый сценарий для проверки входа в систему, где я использую проверку ниже:

1) Печатать «Войти успешно», если доступна ссылка для выхода из системы. 2) Печатать «Ошибка входа в систему», если отображается сообщение об ошибке. продолжает искать ссылку выхода из системы и, следовательно, выдает NoSuchElementException. Ниже приведен тестовый сценарий:

package abhi;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver

public class TestCaseClass 
{     
    public static WebDriver driver;

    public static void main(String[] args) throws InterruptedException    
    {
       System.setProperty("webdriver.chrome.driver", 
       "C:\\Users\\k746261\\Desktop\\Selenium\\chromedriver.exe");
       driver = new ChromeDriver();
       PageClass object = new PageClass (driver);

       driver.get("http://www.gcrit.com/build3/admin/login.php");
       object.Login("admin1", "admin@123");
       Thread.sleep(3000);

       if ((driver.findElement(By.linkText("Logoff")).isDisplayed()))
       {
          System.out.println("Login Successfull");
       }
       else  if (((driver.findElement(By.linkText("Logoff")).isDisplayed()==false)) 
        || ((driver.findElement(By.tagName("td")).isDisplayed())))
       {    
          System.out.println("Login Failed");
       }
       driver.close();
     }
 }

person kumar abhimanyu    schedule 19.06.2018    source источник
comment
какой элемент через исключение   -  person iamsankalp89    schedule 19.06.2018


Ответы (1)


Ваш код выдает NoSuchElementException, поскольку он не может найти на странице ссылку Выход из системы. Код следует обернуть блоком try{} catch{}, в котором вы проверяете, отображается ли элемент или нет. Попробуйте изменить так и посмотрите, поможет ли это:

Boolean elementvisible ;
try
{
    driver.findElement(By.linkText("Logoff"));
    elementvisible = true;
}
catch (NoSuchElementException e) {

// TODO: handle exception
   System.out.println("Element not found : " + e);
   elementvisible = false;
}

if (elementvisible == true)
{
    System.out.println("Login Successfull");
}
else  if ((elementvisible == false) || (driver.findElement(By.tagName("td")).isDisplayed()))
{    
    System.out.println("Login Failed");
}

NB: в случае положительного теста (успешный вход в систему) вы можете добавить WebDriverWait wait, чтобы дождаться, пока ссылка станет видимой.

person Sijin    schedule 19.06.2018