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

Аудит и оптимизация QA-процессов
онлайн, начало 24 декабря
Автоматизация функционального тестирования
онлайн, начало 27 ноября
Логи как инструмент тестировщика
онлайн, начало 30 ноября
Тестирование REST API
онлайн, начало 30 ноября

melf

Регистрация: 18 июл 2012
Offline Активность: 05 авг 2020 06:34
-----

Мои темы

ElementNotVisibleException после экспорта теста в Java

07 августа 2014 - 15:02

Добрый день, коллеги, помогите разобраться в такой проблеме:

 

имеется кнопка 'Sign out', которая становится активной и видимой только после наведения мышки на меню. 

 

Я записала тест с помощью IDE, тест кнопку видит и прекрасно отрабатывает. Но после экспорта в Java я получаю ексепшн org.openqa.selenium.ElementNotVisibleException и даже визуально вижу, что мышка на меню не наводится и соответственно искомая кнопка не видна. 

 

В IDE это выглядит так

 
<tr>
	<td>mouseOver</td>
	<td>css=div.login-top</td>
	<td></td>
</tr>
<tr>
	<td>click</td>
	<td>//div[@class='login-hover']//a[.='Sign out']</td>
	<td></td>
</tr>
<tr>
	<td>waitForElementPresent</td>
	<td>css=div.login-text</td>
	<td></td>
</tr>

В Java экспортируется так:

public class UserLogout extends ru.st.selenium.pages.TestBase {
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();

  @Test
  public void testUserLogout() throws Exception {    // ERROR: Caught exception [ERROR: Unsupported command [mouseOver | css=div.login-top | ]]
    driver.findElement(By.xpath("//div[@class='login-hover']//a[.='Sign out']")).click();
    for (int second = 0;; second++) {
    	if (second >= 60) fail("timeout");
    	try { if (isElementPresent(By.cssSelector("div.login-text"))) break; } catch (Exception e) {}
    	Thread.sleep(1000);
    }

   }

  private boolean isElementPresent(By by) {
    try {
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
      return false;
    }
  }

  private String closeAlertAndGetItsText() {
    try {
      Alert alert = driver.switchTo().alert();
      String alertText = alert.getText();
      if (acceptNextAlert) {
        alert.accept();
      } else {
        alert.dismiss();
      }
      return alertText;
    } finally {
      acceptNextAlert = true;
    }
  }
}

Я в Java по нулям, помогите, пожалуйста, исправить проблему. 

 

Спасибо!

 

З.Ы. Трейс прикрепила. 

 


Яндекс.Метрика
Реклама на портале