Инициализировать объекты страницы - Arquillian - Selenium

Я новичок в Selenium и Arquillian Framework. Я пытаюсь реализовать объектную модель страницы. Возможности браузера Webdriver сохраняются в файле Arquillian XML.

Я использую TestNG и создал следующие классы:

public class Test{
  @Drone
  Webdriver driver;
  @Page
  Login login;
  @Page
  Home home;
  public void createOrderTest(){
    login.navigateURL();
    login.setcredentials();
    home.createOrder();
  }
}

public class Login{
  // Webelements needed in methods below are declared here
  public void navigateURL(){
     driver.get("//url/login.aspx");
  }
  public void setCredentials(){
     // code to enter username, password and click login 
     Graphene.waitAjax().until().element(signIn).is().not().visible();
  }
}

public class Home{
  // Webelements needed in methods below are declared here
  public void createOrder(){
     // code to create order
  }
}

Постановка проблемы: я не уверен, как перемещаться между Login а также Home страницы в коде. Когда пользователь входит в систему, используя Login методы страницы, как использовать Webdriver Home Методы страницы, чтобы продолжить тест?

Ошибка:

Тест работает нормально с navigateURL а также setcredentials методы. Тем не менее, тест не может получить доступ createOrder метод следующим образом:

WARNING: Argument 1 for UpdateTestResultBeforeAfter.update is null. It won't be invoked.
FAILED CONFIGURATION: @BeforeMethod arquillianBeforeTest(public void Test.createOrder() throws javax.mail.MessagingException,java.io.IOException,java.security.GeneralSecurityException)
org.jboss.arquillian.graphene.enricher.exception.PageObjectInitializationException: Can not instantiate Page Object class Home

Пожалуйста, ведите меня. Спасибо.

1 ответ

Решение

Является ли домашняя страница статической страницей? Я предполагаю, что вы не должны перенаправлять страницу входа на домашнюю страницу. Это должно быть сделано самим приложением. То есть конечный пользователь получит доступ к странице входа с помощью URL. после всех переходов должно быть сделано само приложение.

@RunAsClient
public class Test extends Arquillian{

  @Drone
  Webdriver driver;

  @Page
  Login login;

  @Page
  Home home;

  public void createOrderTest(){
    login.navigateURL();
    login.setcredentials();

    //you do not need this
    //home = Graphene.goTo(Home.class)

    //use graphene fluent wait API to wait for the page load
    home.createOrder();
  }
}
Другие вопросы по тегам