我是水豚和jruby的新手。作为我的一个实践,我使用way2sms网站。单击发送短信后,控件无法找到输入电话号码的元素。
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 :(得分:0)
如果没有更多信息,我的猜测是其中一个导致手机号码字段可能通过ajax出现?
page.find(:xpath, '//*[@id="quickclose1"]').click
page.find(:xpath, '//*[@id="quicksms"]').click
你用@javascript运行你的场景吗?这将是我首先尝试的。 由于默认驱动程序是rack_test,并且无法处理任何javascript。并且为了让capybara使用jlen驱动程序,它是selenium,默认情况下,你需要使用@javascript在黄瓜中标记你的场景。或者使用:js =>如果您使用RSpec,则为true。在capybara自述文件here
中阅读问题的根源是没有id为'MobNo'的输入。您确定它是输入字段的正确ID吗? 您还可以通过在失败的步骤之前添加“然后显示页面”步骤来查看网页黄瓜/水豚的样子。