Selenium (WebDriver) не видит модальную панель richfaces - PullRequest
0 голосов
/ 11 июля 2011

У меня возникли некоторые проблемы при попытке проверить элементы внутри модальной панели RichFaces, как показано на демонстрационной странице RichFaces здесь

проблема в том, что однажды был получен элемент Iне может взаимодействовать с ним, потому что WebDriver генерирует исключение ElementNotVisibleException.

Я проверяю его с помощью firebug, и он выглядит серым, потому что для некоторых элементов div высота и ширина установлены на 0.

Я попытался установить все элементы div вручную с помощью высоты и размерачтобы увидеть, изменится ли он, но не существует способа заставить его работать, поэтому я предполагаю, что должно быть что-то еще, влияющее на видимость модальной панели, но не могу найти что.

Кто-нибудь проверял веб-драйвер или селен противпанель richfaces?

Заранее спасибо.

Редактировать: Для кода это слишком много, чтобы поместить здесь, но в основном я адаптировал учебник jbehave для веб-сайта etsy (тот, который использует пружину для инъекциизависимости), которые можно найти здесь .

Архитектура использует PropertyWebDriverProvider, который настроен свойствами maven для использования InternetExplorer или Firefox и использует шаблон PageObject (все страницы простираются от WebDriverPage).

Для конкретного кода один из JimEvans выдает мне ту же ошибку.

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Следующий код работает для меня, используя демонстрационный сайт, на который вы ссылались в своем вопросе.Он получает текстовое содержимое модальной панели, затем нажимает «кнопку», чтобы закрыть панель.

public void testPanel() {
  WebDriver driver = new InternetExplorerDriver();
  driver.get("http://livedemo.exadel.com/richfaces-demo/richfaces/modalPanel.jsf?c=modalPanel");
  WebElement panelShow = driver.findElement(By.id("j_id352:link"));
  panelShow.click();
  WebElement panel = driver.findElement(By.id("j_id352:panelCDiv"));
  WebElement panelTextElement = panel.findElement(By.className("rich-mpnl-body"));
  System.out.println(panelTextElement.getText());
  WebElement panelCloseButton = panel.findElement(By.id("j_id352:hidelink"));
  panelCloseButton.click();
}
0 голосов
/ 03 августа 2011

Единственным решением, которое я обнаружил, было все взаимодействие с javascript через webdriver

...