Вы имеете ввиду:
public LoginPage loginPage = PageFactory.initElements(getWebDriver(),
Вы имеете ввиду:
public LoginPage loginPage = PageFactory.initElements(getWebDriver(),
В какой момент этот объект создается?
Есть подозрение, что все ваши пейдж обджекты используют один и тот же инстанс драйвера.
А статиков точно нигде нет? И да, для чего такое обращение к инстансу getWebDriver()?
так а откуда Page.driver? this.driver же или просто driver
Да, вы пытаетесь осуществить статический call нестатического поля. Правильно написали выше - нужно this.driver указать.
Плюс ко всему, у вас концептуальная ошибка: вы вначале инициализируете драйвер в BeforeClass, а потом для каждого пейдж обджекта повторяете данную процедуру. Т.е. все ваши страницы попытаются создать свой личный инстанс.
Назовите метод инициализации initDriver(), сделайте его void. Если хотите получать инстанс, создайте геттер вытягивающий именно значение вашего private филда драйвера, но не делайте лишних инициализаций. Просто попробуйте понять одну вещь: на 1 тест вам нужен всего 1 инстанс драйвера, который благополучно создастся при наследовании тестом вашего класса-инициализатора. Все, дальше просто передавайте созданный инстанс по страницам и будет вам счастье.
Спасибо, буду разбираться.
Пока что одни эксепшены. Запутался с этими драйверами.
ПС: а BeforeClass я добавил уже после прочтения темы. Думал, что поможет. Изначально его и не было.
Получилось. Запускается три копии браузера и на них проходят три набора тестов.
Сейча попробую запустить с гридовским RemoteDriver'ом.
А вот с RemoteDriver'ом не получается:
Его нужно как-то по особенному объявлять, инициализировать? "Обычный" WebDriver успешно работал.
А точно больше ничего не меняли?
Сложно что-то конкретно сказать по этому стек трейсу, но я бы начал с org.openqa.selenium.support.PageFactory.instantiatePage(PageFactory.java:136)
Плюс, можно ваш метод можно попробовать заставить возвращать не RemoteWebDriver, а просто WebDriver. Т.е.: public WebDriver getWebDriver() {}
Но, опять-таки, гадать по обрывкам кода и стек трейсов можно очень долго.
Извините за дилетантский вопрос. К примеру, я обозвал метод " public RemoteWebDriver getWebDriver() {....
...}.
Нужно ли public WebDriver driver; - переименовывать на public RemoteWebDrive driver; ? Просто я в соответствии с public RemoteWebDriver getWebDriver() {....
...}. переименовал в классах объявления вида
Добрый день.
Вознкла проблема при запуске теста на удаленной машине с помощью Grid'а.
На рабочей машине поднимаю хаб и одну ноду. На удаленной - вторую ноду. В консоле грида отображаются две подключенные ноды. При запуске теста запускаются по одному экземпляру браузера на двух нодах, но тест не стартует. В логе эксепшен:
При запуске теста на одном компьютере с поднятыми двумя нодами проблем нету, тест запускается.
Может, проблема с драйвером?
какой сервер? jenkins? ОС linux? добавьте в shell след команду:
export DISPLAY=:99
Запускал через eclipse и maven. Jenkins еще не трогал.
На машине с первой нодой - WinXP, на машине со второй - win server 2008 R2.
Команду добавить к чему?