2013-09-26 2 views
0

Я в настоящее время рабочая часть Руби, которая выглядит следующим образом:Использование Ruby, ждать загрузки страницы, такой элемент

def error_message 
    browser.span(:id => 'ctl00_cphMainContent_lblMessage').wait_until_present(30) do 
     not errors.empty? 
    end 
    errors 
    end 

Однако, я предпочел бы что-то больше, как это:

span(:errors, :id => 'ctl00_cphMainContent_lblMessage') 


##farther down## 


def error_message 
    browser.errors.wait_until_present(30) do 
etc... 

Я новичок в Ruby, но как я могу сделать что-то подобное, предполагая, что это возможно?

ответ

0

Как правило, вы используете методы Watir::Wait.until или <element>.wait_until_present.

Таким образом, вы могли бы сделать что-то вроде:

# Earlier in code 
@browser = Watir::Browser.start('http://mypage.com/') 
# ... 
errors = { my_first_error: "You forgot your keys in the car!" } 

check_for_errors(error[:my_first_error]) 

# Wherever 
def check_for_errors(error, expiry=30) 
    error_element = @browser.span(:id => 'ctl00_cphMainContent_lblMessage') 
    error_element(value: error).wait_until_present(expiry) 
end 

Смотрите watir documentation для получения дополнительной информации.

+0

Метод «wait_until_present» работает отлично. Проблема в том, что я должен каждый раз указывать элемент. Я бы предпочел повторно использовать что-то под названием «ошибка» или нечто такое же общее, как прямое указание «span (: id => 'blahblahblah») каждый раз, когда мне нужно ждать сообщения этого ярлыка. – user2040277

+0

Если вы знаете текст каждой ошибки, которую вы можете поднять, вы можете заполнить хэш этими и искать на основе страницы, содержащей текст (например: 'browser.text.include? Errors [: my_first_error]'), но это становится довольно хрупким. Если вы просто хотите использовать поиск ошибок, вы можете сделать 'browser.text.include? «Ошибка!», Заменив «Ошибка!». с любым текстом, который предшествует каждой из ваших ошибок. – Momer

+0

Если это поможет, можете ли вы выбрать ответ? – Momer

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