Перейти к содержимому

Фотография

RemoteWebDriver vs PageObject


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 PunkLiner

PunkLiner

    Новый участник

  • Members
  • Pip
  • 73 сообщений


Отправлено 21 сентября 2014 - 20:31

Здравствуйте! Никак не могу победить одну штукенцию. Имеется тест, который заполняет поля на странице (input-ы, select-ы, checkbox-ы). Тест запускается как на windows (локальная машина), так и на Linux(виртуальная машина). Локально используется FirefoxDriver, для удаленного запуска использую RemoteWebDriver. Локально тест проходит успешно, удаленно - не получается отыскать два элемента, пишет что они невидимы "org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with"

Все элементы находятся на одной странице - факт. Теперь код:

Вот эта страница с полями, которая заполняется:

public class A extends Page {

    public A(PageManager pages) {
        super(pages);
    }

    @FindBy(name = "firstName")
    private WebElement firstName;

    @FindBy(name = "secondName")
    private WebElement secondName;

    @FindBy(name = "lastName")
    private WebElement lastName;

    @FindBy(name = "country")
    private WebElement country;

    @FindBy(name = "city")
    private WebElement city;

    @FindBy(name = "phone")
    private WebElement phone;

public A setFirstName(String text) {
        firstName.clear();
        firstName.sendKeys(text);
        return this;
    }

public A setSecondName(String text) {
        secondName.clear();
        secondName.sendKeys(text);
        return this;
    }

public A setLastName(String text) {
        lastName.clear();
        lastName.sendKeys(text);
        return this;
    }

public A selectCountry(String text) {
        new Select(country).selectByVisibleText(text);
        return this;
    }

public A setCity(String text) {
        city.clear();
        city.sendKeys(text);
        return this;
    }

public A setPhone(String text) {
        phone.clear();
        phone.sendKeys(text);
        return this;
    }


Поля city и phone - невидимы.

Эти поля заполняются так:

@Override
    public void createUser(User user) {
        pages.adminMainPage.gotoUserPage().gotoAddNewUser()
                .setFirstName(user.getFirstName())
                .setSecondName(user.getSecondName)
                .setLastName(user.getLastName)
                .selectCountry(user.getCountry)
                .setCity(user.getCity)
                .setPhone(user.getPhone)

Класс AdminMainPage выглядит следующим образом:

public class AdminMainPage extends Page {

    private PageManager pages;

    public AdminMainPage(PageManager pages) {
        super(pages);
        this.pages = pages;
    }

    @FindBy(linkText = "Пользователи")
    private WebElement userLink;

Класс Page

public abstract class Page {

    protected WebDriver driver;
    protected PageManager pages;

    public Page(PageManager pages) {
        this.pages = pages;
        driver = pages.getWebDriver();
    }

И наконец PageManager

public class PageManager {

    private WebDriver driver;

    public A aPage;
    public AdminMainPage adminMainPage;
    
public PageManager(WebDriver driver) {
        this.driver = driver;
        aPage = (A) initElements(new A(this));
        adminMainPage = (AdminMainPage) initElements(new AdminMainPage(this));

protected Page initElements(Page page) {
        PageFactory.initElements(new AjaxElementLocatorFactory(driver, 10), page);
        return page;
    }

    public WebDriver getWebDriver() {
        return driver;
    }

Гуглив, натыкался на похожие случаи, неверная инициализация элементов страницы, якобы значение драйвера выставлялось в null. Мне непонятно как на одной странице 4 элемента находятся, а остальные два нет. 


  • 0

#2 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 22 сентября 2014 - 08:06

попробуйте поставить тот же Линукс на виртуалку или куда ещё и там запустить локально. Вдруг страница не скролится к элементу или ещё что-то


  • 0

#3 PunkLiner

PunkLiner

    Новый участник

  • Members
  • Pip
  • 73 сообщений


Отправлено 22 сентября 2014 - 08:12

У коллеги ubuntu. Он локально запускает, у него работает. Локально он естественно использует FirefoxDriver.


  • 0

#4 PunkLiner

PunkLiner

    Новый участник

  • Members
  • Pip
  • 73 сообщений


Отправлено 22 сентября 2014 - 13:11

Стартанул hub на локальной машине, под windows, подцепил ноду, используя RemoteWebDriver запустил тест. Тест прошел. Не понимаю почему не проходит под debian. Что такого может быть отличительного?


  • 0

#5 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 22 сентября 2014 - 13:39

Поставьте слип секунды на 3, и посмотрите что будет.


  • 0

#6 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 23 сентября 2014 - 08:53

а на Дебиане проходит тест у вас на машине? У меня было такое, что Вин ХР без сервис пака работал по-другому чем с ним и фейлилось всё. Не мог понять


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных