2012-06-19 2 views
0

Я новичок в capybara и jruby. Как одна из моих практик, я использовал сайт way2sms. После нажатия «Отправить SMS» элемент управления не смог найти элемент для ввода номера телефона.Как избавиться от ошибки ElementNotFound в Capybara (JRuby)

require 'rubygems' 
require 'capybara' 
require 'capybara/dsl' 
require 'selenium-webdriver' 
include Capybara::DSL 

    Capybara.run_server = false 
    Selenium::WebDriver::Firefox.path = "C:/Program Files/Mozilla Firefox/firefox.exe" 
    Capybara.default_driver = :selenium 
    visit "http://www.way2sms.com" 
    page.find(:xpath, '/html/body/form/div/div/div[2]/div/div/div[2]/a').click 

    fill_in('username',:with=>"username") 
    fill_in('password',:with=>"password") 
    click_button('button') 

    page.find(:xpath, '//*[@id="quickclose1"]').click 
    page.find(:xpath, '//*[@id="quicksms"]').click 

    page.fill_in('MobNo',:with=>"mobile number") 
    page.fill_in('textArea',:with=>"Some message5") 
    page.find(:xpath, '//*[@id="Send"]').click 
    click_button('Send SMS') 

, когда я запускаю это, он показывает следующее сообщение об ошибке,

Capybara::ElementNotFound: cannot fill in, no text field, text area or password 
field with id, name, or label 'MobNo' found. 

Любой помочь мне очистить эту проблему ...

ответ

0

Без дополнительной информации я думаю, что один из них вызывает поле для мобильного номера, возможно, через ajax?

page.find(:xpath, '//*[@id="quickclose1"]').click 
page.find(:xpath, '//*[@id="quicksms"]').click 

Вы запускаете свой сценарий с помощью @javascript? Это будет то, что я попробую в первую очередь. Поскольку драйвер по умолчанию является rack_test и не может обрабатывать какой-либо javascript. И чтобы capybara использовал javascript-драйвер, который является селеном, по умолчанию вам нужно пометить свой сценарий в огурце с помощью @javascript. Или с помощью: js => true, если вы используете RSpec. Читайте об этом в capybara readme here

Корень проблемы заключается в том, что нет ввода с идентификатором «MobNo». Вы уверены, что это правильный идентификатор для поля ввода? Вы также можете увидеть, что веб-страница выглядит слишком огурцом/capybara, добавив шаг «Тогда покажи мне страницу» до того, как этот шаг не удался.

+0

Спасибо за ваши усилия ... Я выясню это. Я попробую сценарий с Javascript, потому что контент проходит через Ajax, только я думаю. – Anvin

+0

Надеюсь, вы получите это, gl. –

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