2015-02-04 2 views
1

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

Я использовал как неявное, так и явное ожидание загрузки страницы, но без успеха.

Как заставить драйвер нажать кнопку на странице, которая не завершила загрузку?

Фрагмент моего явного кода ожидания:

myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("(//button[@type='submit'])[2]"))); 
    myDynamicElement.click(); 

Благодарности

Добавлено HTML: Кнопка

</div> 

    <div class="first-message-form"> 

     <form role="form" action="/signup/first-message" method="POST"> 
      <div class="form-group"> 

       <textarea id="message_message" name="message[message]" class="form-control"></textarea> 

      </div> 
      <div class="form-group"> 
       <button type="submit" class="btn btn-primary btn-lg">Post to others</button> 
       <button type="submit" class="btn btn-default btn-lg">Skip</button> 
      </div> 
     </form> 

    </div> 

</div> 

"Пропустить" это один я пытаюсь нажмите кнопку.

+0

Какая ошибка? и можете ли вы предоставить немного больше кода с навигацией на сайт? – Saifur

+0

Ошибка не возникает. Мой скрипт просто перестает работать, пока страница по-прежнему загружается. Я не хочу ждать завершения загрузки страницы. Я хочу пойти дальше и нажать кнопку, которая доступна, даже если страница не завершила загрузку. – ratsstack

+0

Можете ли вы предоставить «html» кнопки, которую хотите щелкнуть, и выяснить, что происходит не так? Мне любопытно увидеть ваш тестовый код. – Saifur

ответ

1

Я бы выполнил javascript на этой кнопке. Я предполагаю, что вы используете привязки selenium java, так как вы никогда не говорили об этом.

JavascriptExecutor js =(JavascriptExecutor) driver; 
    js.executeScript("document.querySelector(\"[type='submit'][class='btn btn-default btn-lg']\").click();"); 

Этот скрипт должен нажать на кнопку Skip

Я на самом деле никогда не сталкивался с какой-либо вопрос, где страница не загрузится. Вот почему мне было любопытно посмотреть, не делаете ли вы что-то, чего не делаете, переходя к url.

+1

Спасибо за вашу помощь. Я попробую и посмотрю, работает ли это. – ratsstack

+0

Просто попробовал это и получил следующее сообщение об ошибке: Исключение в потоке «main» org.openqa.selenium.WebDriverException: указана недопустимая или незаконная строка – ratsstack

+0

На каком языке вы используете? – Saifur

0

В WebDriver documentation вы можете найти следующее:

Dependent on several factors, including the OS/Browser combination, WebDriver may or may not wait for the page to load. In some circumstances, WebDriver may return control before the page has finished, or even started, loading. To ensure robustness, you need to wait for the element(s) to exist in the page using Explicit and Implicit Waits.

Это означает, что вы не можете обеспечить поведение водителя в данном случае. Поэтому стабильный тест, вероятно, будет работать, когда страница будет загружена.

+0

Спасибо за ваши комментарии. – ratsstack

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