ユーザーにデータを表示して簡単にコピーできるようにするJavaScriptプロンプトボックスを開くボタンがあるとします。Selenium WebDriverでJavaScriptプロンプトボックスの値を取得
<!DOCTYPE html>
<html>
<body>
<button id="show-coordinates" onclick="prompt('This is your coordinates', '4.684032, -74.109663');">
Show Coordinates
</button>
</body>
</html>
セレンwebdriverをを使用してボタンを自動化する場合、どのようなプロンプトボックスの値を取得する(すなわち、この場合、さらなる使用のためにこれらの値を必要とする座標)? WebDriver APIは、このようなプロンプトボックスのテキストを取得するメソッドを提供します(この例では、それはThis is your coordinates
です)。
ネイティブJavaScriptの解決策も考えられます(属性の<button>
要素にはアクセスできません)。問題を簡単に説明するために、DOMにイベントハンドラを配置します。 Windowsの場合
driver.find_element(:id, 'show-coordinates').click
popup = driver.switch_to.alert
puts popup.text # This is your coordinates
# But how to get "4.684032, -74.109663"?
私も気にしないだろう。だから私はPython AutoHotKey +
win32clipboard
を使用...異なる動作をするように見えるを私は
CTRL+C
組み合わせを送信するために、共通のselenium
方法を試してみましたが、それはfind_element().send_keys()
とswitch_to_alert.send_keys()
として働いていません。私は 'onclick'属性へのアクセスを禁止する理由がわかりません。適切な引数が 'prompt'に渡されていることを確認してください。そうしないと、ネイティブブラウザの 'prompt'メソッドが動作するかどうかをテストするだけです。私はあなたに確信しています、ブラウザのベンダーは自分自身をテストしています:)。 –@MikeMcCaughan:上記のコードは、問題を説明するための単なる例です。ボタンの 'onclick'イベントハンドラはDOMにないかもしれません。アイデアは、それらがそこにあるかどうかをテストするのではなく、今後の使用のための座標を取得することです、したがってブラウザがどのように動作するかは残念なことに無関係です。 :(セレンはブラウザを自動化しますが、テスト目的だけではありません。)他の提案はありますか? –