2016-05-24 3 views
-1

Я хочу протестировать сервер приложений javaEE, и я хочу проверить его с помощью Selenium, когда Selenium connect он должен пройти через страницу входа в систему, но форма этой страницы входа скрыта Я пытаюсь набрать текст в форме, скрытой с помощью Selenium.Selenium и скрытая форма, выполнение без детерминиста

<form hidden name="formLogin" method="POST" action="/app/"> 
     <input type="hidden" name="home" value="true"> 
</form> 
<form hidden name="formLogout" method="POST" action="/app/"> 
     <input type="hidden" name="home" value="false"> 
</form> 

После прочтения этого поста, post on how to force selenium to locate the hidden field, я думал, что решение, но он начинает сводить меня с ума.

У меня есть следующий код:

public class SeleniumTestKheops { 
static WebDriver driver; 
static Wait<WebDriver> wait; 

public static void main(String[] args) throws InterruptedException { 
    driver = new FirefoxDriver(); 
    wait= new WebDriverWait(driver, 30); 
    final String url = "https://localhost:8444/app/"; 
    try { 
    driver.navigate().to(url); 

    JavascriptExecutor js = (JavascriptExecutor) driver; 

    js.executeScript("document.getElementsByName('formLogin')[0].checked = true;"); 
    js.executeScript("document.getElementsByName('formLogout')[0].checked = true;"); 
    driver.findElement(By.xpath("//input")).clear(); 
    driver.findElement(By.xpath("//input")).sendKeys("root"); 
    driver.findElement(By.xpath("//div[2]/div/div/input")).clear(); 
    driver.findElement(By.xpath("//div[2]/div/div/input")).sendKeys("pass"); 

    driver.findElement(By.xpath("//a[contains(@href, '#')]")).click(); 
    } finally { 
     //driver.close(); 
    } 
} 

} 

Но когда я запускаю его несколько раз, результат отличается, иногда это работает, и большую часть времени у меня есть:

Исключение в thread "main" org.openqa.selenium.ElementNotVisibleException: Элемент в настоящее время не виден и поэтому не может взаимодействовать с

Я не понимаю меня Я уверен, почему это случайная работа? Что я делаю не так?

EDIT 1: Я отредактировал код, я в этом уверен. Когда я спам с запуском этого кода, он работает 1 в 5 раз. Я до сих пор не знаю, почему. Я ищу способ проверить все веб-элементы, которые видны на странице.

+0

Какой элемент может не найти? – user2272115

ответ

0

Похоже, что ваши селекторы xpath являются слишком общими.

Вы можете ждать, пока элемент будет виден с

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//valid/xpath")))); 

Я запутался, что вы пытаетесь сделать в вашем методе. Ваш код Java не соответствует предоставленному html. Пожалуйста, предоставьте более полный пример html.

Используя текущий код Java, вы можете подождать, пока все элементы, как это:

// define reusable Bys 
By usernameInput = By.xpath("//input"); 
By passwordInput = By.xpath("//div[2]/div/div/input"); 
By submitButton = By.xpath("//a[contains(@href, '#')]"); 

// wait for all elements to be visible 
wait.until(ExpectedConditions.visibilityOfElementLocated(usernameInput)); 
wait.until(ExpectedConditions.visibilityOfElementLocated(passwordInput)); 
wait.until(ExpectedConditions.visibilityOfElementLocated(submitButton)); 
// clear username field and type username 
driver.findElement(usernameInput).clear(); 
driver.findElement(usernameInput).sendKeys("root"); 
// clear password field and type password 
driver.findElement(passwordInput).clear(); 
driver.findElement(passwordInput).sendKeys("pass"); 
// submit the form 
driver.findElement(submitButton).click(); 
+0

Ну, я не знаю, почему, но мне удалось сделать его работоспособным, проверив элемент 3 с помощью метода isEnabled. Но кажется, что ваш путь чище. Спасибо. Итак, исключение было вызвано тем, что код продолжал выполнение до того, как появился WebElement? –

+0

@BobReynolds Добавление нескольких строк кода для выполнения проверки isEnabled, вероятно, дает странице несколько миллисекунд для загрузки элементов. Да, ElementNotVisibleException означает, что элемент, с которым вы пытались взаимодействовать, не отображается в экземпляре firefox. – user2272115

Смежные вопросы