>WebDriverだと、厳密に現在のframe/iframeしかアクセス対象にならないと認識しています。
⇒こちらについてですが、webdriver経由でIDEから実行した場合ということでしょうか?
さっそくSelenese Runner Javaから実行してみたところ、frameの移行が問題なく実行できました。ただ、Selenese Runner Javaで実行した場合、以降の下記処理でNGになってしまいました。。。
(次コマンドである文字列を選択が成功しました。)
mouseOver
clickAt
処理のフローでいうと、プルダウンのボタン画像を選択すると一見プルダウンのように選択項目が出てくるのですが、
内部ではプルダウンでは作成していないのかselectコマンドではうまくいかず、上記2つのコマンドを組み合わせて
選択できました。
mouseOver target-要素のid指定
clickAt target-要素のid指定
度々申し訳ありませんが、なにか原因ご存じであればご教示頂きたくお願い致します。。
FirefoxプラグインのSeleniumIDEの中で実行する場合は、子のframe/iframeへのアクセスは可能なのですが、WebDriverだと、厳密に現在のframe/iframeしかアクセス対象にならないと認識しています。実際、拙作のSelenese Runner Javaでは、フレームのあるページでのelementの取得に大変苦労しています。Selenese Runner Java: SeleniumIDEのスクリプトを各種ブラウザで実行するツールその苦労の跡:-)https://github.com/vmi/selenese-runner-java/blob/master/src/main/java/jp/vmi/selenium/selenese/locator/WebDriverElementFinder.java
下記内容にてお伺いしたいのですが、FirefoxプラグインのSeleniumIDEの中で実行する場合は、子のframe/iframeへのアクセスは可能なのですが、WebDriverだと、厳密に現在のframe/iframeしかアクセス対象にならないと認識しています。実際、拙作のSelenese Runner Javaでは、フレームのあるページでのelementの取得に大変苦労しています。
・ここで指している現在のframe/iframeというのはtopframe(親frame)という認識で齟齬ないでしょうか。
・苦労の跡リンクにあるelement取得のjavaですが、すみません。javaが分かっておらず(大変申し訳ありません・・('_'))こちらに記載してある内容は具体的にどのようなことが記載されているのでしょうか。。。
driver.switchTo().frame(...)
driver.switchTo().frame(...)ここで子のframeを指定することはできないのでしょうか。
ただ、ここでframeを指定することはできたとしてもIDEから別ブラウザでの実行ではできないですよね。。
らんさぶさんが上記でおっしゃられておられます下記環境とテストケースで動作確認できたそうなのですが、
このようなケースで何かご存知ないでしょうか。
(岩室さんもこのテストケースで動作確認できた事例等ないでしょうか)
(IDE2.9.0 + IE11)
driver.switchTo().frame(...)ここで子のframeを指定することはできないのでしょうか。
(註:以下はWebDriver API限定の話で、SeleniumIDEで直接実行する場合は関係ありません)このメソッドにdriver.findElement等で拾ってきたフレーム(frame/iframe)エレメントを渡せばそのフレームに移動します。この状態でdriver.findElement等を実行した場合、指定したフレームの中にあるエレメントしか拾えません。(親や子のフレームの中にあるエレメントは見えません)frame(...)では階層を潜っていくしかできないので、別のフレームに移動する場合は、driver.switchTo().parentFrame()で親の階層に戻るか、driver.switchTo().defaultContent()でトップレベルに戻る必要があります。# さらに、parentFrame()がサポートされていない(未サポート例外を投げてくる)WebDriverもあったりします……。また、以前の投稿にも書いたように、フレームを移動すると移動前に取得したエレメントは無効になります。ただ、ここでframeを指定することはできたとしてもIDEから別ブラウザでの実行ではできないですよね。。ここで言う「IDEから別ブラウザでの実行」というのは、IDEで作成したスクリプトをselenium-server-standaloneで実行する場合でしょうか?この場合はselenium-server-standaloneの実装次第なので何とも。それとも「テストケースをエクスポート」で他言語のスクリプトに変換した場合でしょうか?この場合、WebDriverベースでのスクリプトに変換したなら前述のフレームの問題に引っ掛かる可能性が高いです。
ちなみに、実行時のIDEをスクリーンショットは添付できますかね?
(対象が特定できそうな個所はぼかして。コマンドがどこまで進んでいるかが分かればよいので)
エラーになっている コマンドですが、assertText の 文法は下記なのですがこれは 投稿用に修正されていますか?
- assertText(locator, pattern)
- Generated from getText(locator)
Arguments: locator - an element locator
- Returns: the text of the element
IDEの 「対象」テキストボックスの右横に並んでいる [select][検索] の検索を押して 確認できますか?
正しいロケーター指定であれば、ブラウザ上で 検証したい文字列部分がハイライトになるはずですが。
上述の確認とは別に assertText コマンド以外を記録、実行はできるか確認してもらえますか例えば 同枠内にある テキストリンクなりボタンなりの操作を記録して IDE上で実行すると言う意味です。