a
Watir では、Bootstrap が提供するポップオーバー内に表示される要素にアクセスしようとしています。
呼び出しだけでa(:class, 'my_link').click
はボールをプレーしたくなかったのでa(:class, 'my_link').wait_until_present
、ポップオーバーを生成する要素をクリックしてそのコンテンツにアクセスする間のタイミングの問題である可能性があることを期待して行を追加しましたが、これは 30 秒後にタイムアウトし、その要素を返します存在することはありません。
待機中にコード インスペクタを開いて、要素が存在し、クリック可能であることを確認できます。
Watirが行うべき手順を手動で実行することを言及する必要があります。
私の現在の考え
jQuery を使用してこの要素と対話しようとしたとき、通常の使用で.click();
は機能せず、代わりに呼び出す必要$('body').on('click', ',my_link');
があったことを知っています。
要素が不可視として誤って分類されていることに関係している可能性があります。
どんなガイダンスもありがたく受け取られます。
コード
ポップオーバー内から生成されたコードは次のとおりです。
<div class="popover fade bottom in" style="top: 40px; left: 424px; display: block;">
<div class="arrow"></div>
<div class="popover-inner">
<h3 class="popover-title"></h3>
<div class="popover-content">
<!-- SNIP -->
<p>
<a class="my_link">My Link</a>
</p>
</div>
</div>
</div>
ポップオーバーはクリックで生成されます。
$('.nav-popup').popover('show');
ここに、Watir テストの関連部分があります。
span(:class, 'nav-popup').click
a(:class, 'my_link').wait_until_present
a(:class, 'my_link').click
ポップオーバーを操作できることを確認するために、Watir テストに以下を追加しました。
quick_log = a(:class, 'my_link').html
binding.pry
そして、pry を開くとquick_log
、正しい HTML コンテンツが含まれている a(:class, 'my_link').wait_until_present
ことがわかりました。
エラー メッセージ
この線
a(:class, 'my_link').click
生成します。
Selenium::WebDriver::Error::ElementNotVisibleError:
Element is not currently visible and so may not be interacted with