3

watir-webdriverを使用してサイトにアクセスしようとしていますが、Firefox+Firebugで表示できるテキストボックスがwatirに見つからないようです。

私のコードは

require 'rubygems'
require 'irb/completion'
require 'watir-webdriver'
browser = Watir::Browser.new(:firefox)
browser.goto('http://emersonecologics.com/')
browser.text_field(:name, "txtEmail").set("myemail@gmail.com")

エラーが発生します:

Watir::Exception::UnknownObjectException: unable to locate element, using {:type=>"(any text type)", :name=>"txtEmail", :tag_name=>"input or textarea"}

ただし、Firebugで表示されるため、txtEmailという名前のテキストボックスがあることはわかっています。

<input id="txtEmail" class="textbox" type="text" tabindex="1" name="txtEmail">

もちろん、このテキストボックスはツリーの奥深くにあります。そこで、DOMでナビゲートする必要があると考えて、「all」というdivにアクセスしようとしました。

私が行った場合

>>browser.divs[1].id
=> "all"
>> browser.divs[1].tag_name
=> "div"

しかし、次のようにハンドルを取得しようとすると、見つからないようです。

>>browser.div(:id, "all")
=> #<Watir::Div:0x101a8fd70 located=false selector={:tag_name=>"div", :id=>"all"}>

ページ内のオブジェクトを選択する方法を教えてもらえますか?

4

2 に答える 2

3

アクセスしようとしている要素がフレーム内にあるようです。私は次のようにメールを設定することができました:

browser.frame(:index、1).text_field(:name、 "txtEmail")。set( "myemail@gmail.com")

詳細については、http ://wiki.openqa.org/display/WTR/Framesをご覧ください。

于 2011-06-09T02:04:31.637 に答える
3

私にもフレームに入っているように見えます

インデックスに関する混乱を避けるために(特に、Watirのさまざまなフレーバーが0ベースまたは1ベースのいずれかであるという点でさまざまな点があります)、名前で識別することをお勧めします。これが点滅するかどうかを確認します。

browser.frame(:id, "ctrlLoginSSL_ifLogin").text_field(:id, "txtEmail").flash

フレーム内のものの処理の詳細については、フレームに関するWatirWikiページを参照してください。

PS

注(サイトに関連し、フレームの使用):Chromeなどの一部のブラウザーは、フレーム(https)のプロトコルの不整合が外部コンテナー(http)Chromeと一致しないことに気付いていることにも言及する場合があります。開発者ツールは次の苦情を発行しています

安全でないJavaScriptは、URLhttp://emersonecologics.com/のフレームからURLhttps://www.emersonecologics.com/User/LoginFrame.aspx?redir=/default.aspxのフレームにアクセスしよう と ます。ドメイン、プロトコル、およびポートは一致する必要があります。

于 2011-06-09T04:37:26.543 に答える