2016-08-12 7 views
4

Мой HtmlКак решить ошибку тайм-аута в selenium webdriver с java?

<form id="load_form" class="ajaxsubmit" method="post" action="ajax.php"> 
<input type="hidden" value="register" name="action"> 
<h3>Registration Form</h3> 
<img id="loader" width="20" height="20" style="display:none;" src="images/loader.gif"> 
<p id="alert"></p> 
<fieldset> 
<fieldset> 
<fieldset> 
<fieldset> 
<fieldset> 
<fieldset> 
<label>Username:</label> 
<input type="text" required="" name="username"> 
</fieldset> 

My Java Code

WebDriverWait wait = new WebDriverWait(driver,30); 
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@name='username']"))); 
element.sendKeys("john"); 

Получение Ниже Ошибка

Исключение в потоке "главный" org.openqa.selenium.TimeoutException: Timed через 30 секунд ожидая видимости элемента, расположенного по адресу By.xpath: // input [@ name = 'username'] Информация о сборке: версия: '2.53.0', редакция: '35ae25b', время: '2016-03-15 17:01:03'

Любая помощь? Я уже пробовал, увеличивая ожидания, но не работаю

+0

Я думаю, что это 'input' находится внутри фрейма или фрейма, пожалуйста, проверьте его первый и дайте мне знать .. –

+0

нет это не не под Iframe или Рамка. – Ab123

+0

Откуда вы знаете, что это не под IFrame или рамкой ??? –

ответ

1

На самом деле there are два input элементов присутствуют с тем же именем username где один скрыто, а другой является видимым и вы intracting с первым, которая не видна на странице, которая является почему вы не можете найти, попробуйте использовать cssSelector, как показано ниже: -

WebDriverWait wait = new WebDriverWait(driver,30); 

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div#load_box input[name = 'username']"))); 
element.sendKeys("john"); 
+0

Это правильно, но когда я попытался с Xpath, он не работает и отлично работает с Css Selector, поэтому мы можем сказать, что селектор Css превосходит Xpath? потому что по этому запросу // input [@ name = 'username'] найден только один элемент? – Ab123

+0

На самом деле это правда, что 'cssSelector' намного быстрее, чем' xpath', но 'xpath' также является мощным, потому что многие случаи' cssSelector' не работают, но 'xpath' работает в каждом случае ... Нет,' // input [@ name = 'username'] 'xpath находит два элемента, повторите проверку в консоли браузера, используя этот' $ x ("// input [@ name = 'username']") '..it возвращает два элемента, проблема не с 'xpath', проблема с поиском элемента с селеном, потому что selenium всегда возвращает первый элемент в порядке, если локаторы одинаковы для нескольких элементов и, к сожалению, в элементах порядок невидимого элемента является первым .. –

+0

@ Ab123 Если вы хотите использовать' xpath', вы можете используйте '// div [@id = 'load_box'] // input [@name = 'username']' xpath, он вернет уникальный элемент желания ... :) –

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

  • Нет связанных вопросов^_^