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

Английский для тестировщиков
онлайн, начало 21 июня
Погружение в тестирование. Jedi point
онлайн, начало 21 июня
Тестирование REST API
онлайн, начало 21 июня
Программирование на C# для тестировщиков
онлайн, начало 25 июня
Фотография

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


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

#1 melf

melf

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

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


Отправлено 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 по нулям, помогите, пожалуйста, исправить проблему. 

 

Спасибо!

 

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

 

Прикрепленные файлы

  • Прикрепленный файл  stacktrace.txt   4,92К   0 Количество загрузок:

  • 0

#2 BabyRoot

BabyRoot

    Специалист

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


Отправлено 08 августа 2014 - 06:48

Перед строчкой 

driver.findElement(By.xpath("//div[@class='login-hover']//a[.='Sign out']")).click();

вставьте

new Actions(driver).moveToElement(driver.findElement(By.cssSelector("div.login-top"))).perform();

  • 0

#3 melf

melf

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

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


Отправлено 08 августа 2014 - 10:09

К сожалению, не помогло...


  • 0

#4 BabyRoot

BabyRoot

    Специалист

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


Отправлено 08 августа 2014 - 10:24

добавьте задержку Thread.sleep(500); после мува


  • 0

#5 melf

melf

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

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


Отправлено 08 августа 2014 - 11:00

Не помогло, зато помог JavascriptExecutor:

 

Вместо

driver.findElement(By.xpath("//div[@class='login-hover']//a[.='Sign out']")).click();

Надо сделать

 WebElement element = driver.findElement(By.xpath("//div[@class='login-hover']//a[.='Sign out']"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", element);

  • 0

#6 BabyRoot

BabyRoot

    Специалист

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


Отправлено 08 августа 2014 - 12:19

То как вы кликаете - некорректно.

Сами сказали надо сначала чтобы кнопка появилась при наведении мышки - то что вы кликнули по тому что не появилось - некорректно.


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн



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

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

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