2015-03-17 4 views
3

В WebDriver documentation гласит следующее за driver.get() операции:Что именно делает driver.get()?

В зависимости от нескольких факторов, в том числе комбинации OS/Browser, WebDriver может или не может ждать загрузится страница. В некоторых обстоятельствах WebDriver может вернуть контроль до того, как страница закончена, или даже начала, загружая

Может кто-нибудь объяснить, при каких обстоятельствах WebDriver возвращает управление до того, как страница закончена, или даже начала, загрузка?

+1

Кстати, мне нравится ваше имя :) – Saifur

+0

Hi @Saifur. Давайте свяжемся с формой, указанной в моем профиле. –

ответ

1

В простой форме, .get() переводит вас по URL-адресу.

Может ли кто-нибудь объяснить, при каких обстоятельствах WebDriver возвращает управление до того, как страница закончится или даже начнется загрузка?

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

И это, кстати, одна из причин того, что protractor package существует специально для тестирования приложений AngularJS - он слушает угловое сообщение «хорошо, я закончил с этой страницей».

Есть несколько способов ожидания для загрузки страницы:

Адрес perfect answer, что должно помочь в расчистке вещей.

Также см темы, связанные с некоторыми большими объяснениями проблемы:

0

Это зависит от используемого WebDriver.

Почти в каждом WebDriver управление передается после загрузки документа. Это означает, что возможность обратного вызова onDocumentReady JavaScript еще не закончена.

Чтобы обойти это, вы можете использовать WebDriverWait или FluentWait с подходящим предикатом.

A Thread.sleep() также возможен, но довольно грязный путь!

+0

Когда вы говорите, что «управление задано после загрузки документа», как WebDriver определяет «документ загружен»? – badhaircut

+0

Зависит от водителя. Для этого вы можете посмотреть GrepCode. Вот пример HtmlUnitDriver: http://grepcode.com/search/usages?type=method&id=repo1.maven.org%[email protected]%[email protected]@com%24gargoylesoftware%[email protected]@getResponse % 28com.gargoylesoftware.htmlunit.WebRequest% 29 & к = uttp: //grepcode.com/search/usages тип = метод & ID = repo1.maven.org% 24maven2 @ net.sourceforge.htmlunit% 24htmlunit @ 2.15 @ ком% 24gargoylesoftware% 24htmlunit @ WebConnection @ GetResponse% 28com.gargoylesoftware.htmlunit.WebRequest% 29 & к = U –

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