Selenium RemoteWebDriver, похоже, не распознает изменения javascript в веб-элементах

Я пытался проверить видимость WebElements после выполнения некоторого javascript. WebElements находятся по следующим путям:

 public static final String MOBILE_APPS_RUNNING_APP_XPATH = "//*[@id='app_slider']/ul/li[1]/a[@class='app nike-running']";
 public static final String MOBILE_APPS_FUELBAND_APP_XPATH = "//*[@id='app_slider']/ul/li[1]/a[@class='app nike-fuelband']";
 public static final String MOBILE_APPS_BASKETBALL_APP_XPATH = "//*[@id='app_slider']/ul/li[1]/a[@class='app nike-basketball']";
 public static final String MOBILE_APPS_TRAINING_APP_XPATH = "//*[@id='app_slider']/ul/li[2]/a[@class='app nike-training']";
 public static final String MOBILE_APPS_KINECT_APP_XPATH = "//*[@id='app_slider']/ul/li[2]/a[@class='app nike-kinect']";
 public static final String MOBILE_APPS_MORE_APPS_XPATH = "//*[@id='app_slider']/ul/li[2]/a[@class='app nike-more']";

Первые три элемента видны при загрузке страницы. Функция javascript заставляет элементы смещаться через атрибут стиля -moz-transform: translate3d(-1084px, 0px, 0px);, так что следующие три элемента становятся видимыми. Это хорошо работает с локальным браузером Firefox, который улавливает изменения, но когда я пытаюсь использовать RemoteWebDriver, подключенный к браузеру Firefox в настройках сетки, элементы больше не видны. С помощью снимка экрана я подтвердил, что элементы по-прежнему видны в RemoteWebDriver, но я подозреваю, что элементы кэшируются RemoteWebDriver, а не берутся из обновленной модели DOM.

Есть ли способ проверить это, и если да, то как я могу обновить DOM, чтобы увидеть, что элементы теперь видны?

Чтобы уточнить: я использую метод driver.findElement(By.xpath(...)) после выполнения javascript и жду, пока элемент станет видимым, чего он никогда не делает.


person rRahkola    schedule 25.03.2013    source источник


Ответы (1)


Выяснилось, что версии selenium-server (и FirefoxDriver) на моей локальной машине и в сетке различались, хотя версии Firefox в этих двух средах были одинаковыми. На моей локальной машине (которая работала как положено) я использовал selenium-server_2.25.0, а в сетке — selenium-server_2.28.0 (что не работало должным образом). Одним из отличий, которое оказало влияние, было изменение в FirefoxDriver для использования собственных событий Firefox. Я убедился, что обновление selenium-server_2.31.0 восстановило функциональность (и видимость), как и предполагалось.

person rRahkola    schedule 27.03.2013