0

私はカピバラとjrubyに不慣れです。私の練習の1つとして、way2smsサイトを使用しました。[SMSの送信]をクリックした後、コントロールは電話番号を入力する要素を見つけることができませんでした。

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

これ以上情報がなければ、これらの1つがおそらくajaxを介して携帯電話番号のフィールドを表示させるのではないでしょうか?

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

@javascript でシナリオを実行しますか? それが私が最初に試すことです。デフォルトのドライバーは rack_test であるため、javascript を処理することはできません。また、カピバラがセレンである javascript ドライバーを使用するようにするには、デフォルトで、@javascript でキュウリのシナリオにタグを付ける必要があります。または、RSpec を使用している場合は :js => true を使用します。こちらのカピバラのreadmeでそれについて読んでください

問題の根本は、ID「MobNo」の入力がないことです。入力フィールドの正しい ID であると確信していますか? また、失敗したステップの前に「ページを見せてください」というステップを追加することで、Web ページがキュウリ/カピバラのように見えることも確認できます。

于 2012-07-02T07:47:21.227 に答える