0

cucumber+watir-webdriver を使用してモバイル Web アプリケーションのテストを作成しようとしていますが、スプラッシュ メッセージの 1 つの特定のリンクで問題が発生しています。

選択したいリンクは<a class="btn" href="#">Close button</a>、javascript によってページ上に作成された です。

これらのセレクターを試しました:

browser.link :text => 'Close button'
browser.link(:class,"btn")
browser.div(:id,"vf_dialog_desc").link(:class,"btn") # with encompassing div
browser.div(:xpath,"//div[@id='vf_dialog_desc']/descendant::a[text()='Close button']")

ただし、それらはすべてエラーの変種で失敗します。

Error: {"message":"Unable to locate an element with the xpath expression (...snip xpath expression...) because of the following error:\nTypeError: Object #<an HTMLDocument> has no method 'evaluate'"}

奇妙なことに、browser.html.include? 'Close button'は true と評価されるため、watir は要素にアクセスできます。

他の同様の質問とは異なり、このページはフレーム内にないことに注意してください。

ページ構造は次のとおりです。

<html>
    <head>...</head>
    <body>
        <div id="home">
        <div id="vf_dialog_holder" class=" show">
            (...)
            <div id="vf_dialog_wrap">
                <h4 id="vf_dialog_head" style="display: block;" class=" vf_dialog_info_icon">Welcome to xpto</h4>
                <div id="vf_dialog_desc">
                    <img src="884857.jpg">
                    <p>Blurb.</p>
                    <a class="btn" href="#">Close button</a>
                </div>
                <div class="clr">
            </div>
         </div>

ruby-2.0.0-p247 で watir-webdriver (0.6.4) を実行しています。

4

1 に答える 1

1

ボタンは JavaScript を介して作成されるため、ボタンが表示される前に watir がボタンと対話しようとしていると推測しています。要素を明示的に待機してみてください。

リンクが表示されるのを待つだけの場合:

browser.link(:class => "btn").wait_until_present

リンクが表示されたら、それを使って何かをしたい (例えば、クリックする) 場合:

browser.link(:class => "btn").when_present.click
于 2013-09-26T12:42:14.647 に答える