Инициализировать объекты страницы - 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();
}
}