2014-02-19 3 views
0

Я пытаюсь проверить, присутствует ли элемент на странице с помощью команды if (@browser.text_field(:id => textbox).exists?), но эта команда выполняется еще до того, как страница загрузилась, и она всегда переходит к инструкции else. Как я могу справиться с этим?Команда Watir выполняется до загрузки страницы

ответ

0

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

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

@browser.div(:id => 'spinners_id').wait_while_present 
if @browser.text_field(:id => textbox).exists? 
    # Do stuff 
else 
    # Do other stuff 
end 

Альтернативно, может быть элемент на странице, что вы знаете, загружается в последнюю очередь. В этом случае, вы можете подождать до тех пор, пока не появится этот элемент:

@browser.div(:id => 'some_last_element').wait_until_present 
if @browser.text_field(:id => textbox).exists? 
    # Do stuff 
else 
    # Do other stuff 
end 
0

@ browser.text_field (: идентификатор, текстовое поле) .when_present.set «Добро пожаловать»

Это поможет уменьшить нежелательную проверку ожидания коды и сделать код более читаемым.

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