2012-01-31 5 views
1

データ駆動型テストのためのExcelスプレッドシートからラジオボタンを選択したいと思います。ルビーでexcelからラジオボタンを選択

私は次のことを試してみました:

radio=worksheet.cells(rows,"A").value 
browser.radio(:name => 'name').set radio 

私も文字列として選択してみましたが、エラーを得た:

radio=worksheet.cells(rows,"A").value 
string_from_excel = "set" 
browser.send string_from_excel, radio 

ラジオボタンのコードは次のとおりです。

<input id="radio" type="radio" onclick="setradio(0)" value="0" name="radio"> 

ヘルプありがとう

+0

onclickイベントを呼び出す必要があるようですので、どこかで '.click'が必要になると思います。 (注:私はExcelとWatirのでYMMVを扱っていません)。これはスプレッドシートのHTML表現ですか? –

+0

実際に.xlsxファイルからデータを取得していません – mike

+0

どのようなデータを取得していますか?スプレッドシートから? –

答えて

1

を設定します。コメントやその他の回答のすべての質問に注目してください。スプレッドシートから何を取得しているのかははっきりしていません。そのデータを保持する変数の名前「radio」は、その単語があふれているコード(および関連するHTML)のセクションにその用語のもう一つのインスタンスを表示します。 radio_idradio_valueまたはradio_nameのように呼び出すと、スプレッドシートから取得する必要があるものと、その変数に含まれるものを明確にすることができます。それはまた、今から4ヶ月後に自分自身にも意味をなさないでしょう。

次に、必要な項目を正しく識別する方法を慎重に評価します。あなたのサンプルHTMLには1つのラジオコントロールしか表示されませんが、通常はこれらのコントロールがセットになっています.NAMEはよく共通のセットであるラジオコントロールを特定するために使用されます。see the examples on this pageしたがって、name属性を使うことは、しばしばラジオボタンを識別するためのひどい方法です。 Value、または埋め込みテキストは、通常、「正しい」ラジオコントロールをセットから外すよりはるかに良い方法です。

第3に、ウォーターラジオボタンオブジェクトの.setメソッドはパラメータを受け入れず、指定された特定のラジオコントロールが「セット」状態にあることを保証するだけです。 .setの補数は.clearです(詳細はWatir RDOCを参照してください)

また、コントロールにはHTMLで定義されたイベントハンドラがあります。これは、コントロールがonclickイベントを受け取ったときにスクリプトを実行しています。したがって、ページを正しく動作させるために設定した後(または設定する代わりに)、onclickイベントを発生させて、適切なクライアントサイドコードが呼び出されるようにする必要があります。私はこの

radio_value = worksheet.cells(rows,"A").value 
browser.radio(:value => radio_value).set 
browser.radio(:value => radio_value).fire_event('onclick') 

のSoapboxのようになりますコードを試してみたことを念頭に置いて

は:
セットで来るもう一つの理由はラジオのは、あなたのマウスでラジオボタンを「非設定」ではないということです同じセット内の別のボタンを選択することを除いて。 Webページに単独のラジオボタンが表示されることはほとんどありません。選択または選択解除できるものが1つだけ必要な場合は、通常は 'checkbox'要素が使用されます。開発者が1つのラジオをチェックボックスのように動作させるためにjavascriptコードを実装して 'チェックボックス'として使用している場合は、 を取り出して を打ち込み、CSSの使用方法を知っている開発者に置き換える必要がありますそのようなものの代わりに、貧弱なラジオコントロールを乱用し、誰かがJavaScriptを無効にしていると正しく動作しないページを作成する。

+0

はうまくいきました.....ありがとう – mike

0

まず、そしてちょうどを使用し、「ラジオ」に「名前」から名前を変更するには、まず読み、あなたのコードを少し簡単にするために試すことができます

browser.radio(:name => 'radio').set 
+0

次のエラーが発生しました: 'assert_exists':{:name => "radio"}を使用して要素を見つけることができません(Watir :: Exception :: UnknownObjectException) – mike

+1

htmlをファイルにコピーし、ラジオボタンをクリックしました。あなたはそれを試しましたか?多分あなたは私にその問題を見るのに十分な情報を提供していないでしょう。あなたはhtml全体を提供する必要があります(または問題を再現できるほど少なくてもかまいません)。 –