7

したがって、ページには次のコードがあります。

<div class="toggle-wrapper">
  <input id="HasRegistration_true" class="registration_required toggle" type="radio" value="True" name="HasRegistration" data-val-required="The HasRegistration field is required." data-val="true">
  <label for="HasRegistration_true" class="">On</label>
  <input id="HasRegistration_false" class="registration_required toggle" type="radio" value="False" name="HasRegistration" checked="checked">
  <label class="checked" for="HasRegistration_false">Off</label>
</div>

これらは 2 つのラジオ ボタンです。'オンとオフ'。「オフ」がデフォルト値です。

Watir-webdriver と Ruby を使用して、「オン」ラジオ ボタンを選択します。次のようにします。

browser.radio(:id => "HasRegistration_true").set

しかし、そうすると、次のエラーが発生します。

`WebElement.clickElement': Element cannot be scrolled into view:[object HTMLInputElement] (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)

Selenium 2 はページを要素までスクロールすることがわかっているため、下にスクロールしようとしても無駄です。私たちは常にwatir-webdriverとrubyの最新リリースを使用しています。

私たちは QA エンジニアであるため、ページの HTML を変更することはできません。

4

5 に答える 5

1

これが私のために働いた2つの解決策です:

機能するwatir-scrollと呼ばれる Ruby gem があります。

それで

require 'watir-scroll'
browser.scroll.to browser.radio(:id, "HasRegistration_true")

gem を追加したくない場合は、私の同僚が、(私にとって) 驚くべきことに、上記のコードと同じ効果があることを提案してくれました。

browser.radio(:id, "HasRegistration_true").focus
browser.radio(:id, "HasRegistration_true").set

私のコードでは、「.focus」は、以前は表示されていなかった要素に直接スクロールしました。それはあなたにとってもうまくいくかもしれません。

于 2014-04-15T13:13:35.157 に答える
0

javascriptを実行してラジオ要素を設定可能にすることで、その場でhtmlを操作できます。ページ上でJavaScriptを実行するには、次のようにします。 @browser.execute_script("your javascript here")

次のJavaScriptのようなものを使用して、ラベルタグからクラスを削除し、Chrome固有の問題に対して対処しようとした入力タグの邪魔にならないようにしました。 execute_script("$(\"label.classname\").removeClass(\"classname inline\")")

于 2013-03-14T01:02:16.097 に答える
0

要素がフォームと div (Wrap) クラスに含まれている場合、「 https://quote.comparethemarket.com/Motor/Motor/AboutYourVehicleの [いいえ] ラジオ ボタンをクリックするには、次の手順を実行する必要があることがわかりました。 .aspx ?」ページ:

div_list = @browser.form(:action => "AboutYourVehicle.aspx?ton_t=CTMMO&prdcls=PC&rqstyp=newmotorquote&AFFCLIE=CM01").div(:class => "inputWrap").divs(:class => "custom-radio" )

そして: div_list[1].click

これで問題が解決することを願っています:-)

于 2013-03-21T14:33:13.530 に答える
0

まず、XPATH を使用して要素を見つけてみます。

browser.element(:xpath, "//input[@id='HasRegistration_true']").click

また

または、見つけようとしている隠し要素である場合は、CSS を使用することをお勧めします。firefox 用の firebug アドオンをダウンロードし、要素の CSS パスをコピーします。

次のようになります。

browser.element(:css => "the CSS path you have copied from Firebug").click

2つのうちの1つがあなたのためにそれをするべきです!!

頑張ってください!

于 2013-03-13T12:06:28.600 に答える