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

Публикации melf

3 публикаций создано melf (учитываются публикации только с 29 марта 2023)


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

Отправлено автор: melf 07 августа 2014 - 15:02 в Selenium - Functional Testing

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

 

имеется кнопка '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 Количество загрузок:



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

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

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




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

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

Не помогло, зато помог 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);