0

我是水豚和 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.

任何人都可以帮助我解决这个问题...

4

1 回答 1

0

没有更多信息,我的猜测是其中之一导致手机号码字段可能通过 ajax 出现?

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

您是否使用@javascript 运行您的场景?那将是我首先要尝试的。由于默认驱动程序是 rack_test 并且不能处理任何 javascript。为了让 capybara 使用 selenium 的 javascript 驱动程序,默认情况下,您需要使用 @javascript 在 cucumber 中标记您的场景。或者如果您使用的是 RSpec,则使用 :js => true 。水豚自述文件中阅读它

问题的根源在于没有 ID 为“MobNo”的输入。您确定它是输入字段的正确 id 吗?您还可以通过在失败的步骤之前添加步骤“然后显示页面”来查看网页的外观。

于 2012-07-02T07:47:21.227 回答