PythonでSelenium Webdriverを使用してWebページをスクレイピングしています
私が取り組んでいるウェブページにはフォームがあります。フォームに入力した後、[送信]ボタンをクリックします。
ポップアップウィンドウ(Javascript Alert)を生成します。 Webdriverでポップアップをクリックする方法がわかりません。
それを行う方法はありますか?
ありがとう
Python Webdriverスクリプト:
from Selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://sandbox.dev/alert.html")
alert = browser.switch_to_alert()
alert.accept()
browser.close()
Webページ(alert.html):
<html><body>
<script>alert("hey");</script>
</body></html>
Webdriverスクリプトを実行すると、警告を示すHTMLページが開きます。 Webdriverはすぐにアラートに切り替えてそれを受け入れます。その後、Webdriverはブラウザを閉じて終了します。
アラートがあるかどうかわからない場合は、このようなエラーをキャッチする必要があります。
from Selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://sandbox.dev/no-alert.html")
try:
alert = browser.switch_to_alert()
alert.accept()
except:
print "no alert to accept"
browser.close()
アラートのテキストを確認する必要がある場合は、アラートオブジェクトのテキスト属性にアクセスして、アラートのテキストを取得できます。
from Selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://sandbox.dev/alert.html")
try:
alert = browser.switch_to_alert()
print alert.text
alert.accept()
except:
print "no alert to accept"
browser.close()
from Selenium import webdriver
from Selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
#do something
if EC.alert_is_present:
print "Alert Exists"
driver.switch_to_alert().accept()
print "Alert accepted"
else:
print "No alert exists"
Excepted_conditionsの詳細 https://seleniumhq.github.io/Selenium/docs/api/py/webdriver_support/Selenium.webdriver.support.expected_conditions.html
私はRubyバインディングを使用していますが、ここでSeleniumで見つけたものPython Bindings 2のドキュメント: http://readthedocs.org/docs/Selenium -python/en/latest/index.html
Selenium WebDriverには、ポップアップダイアログボックスを処理するためのサポートが組み込まれています。トリガーしてポップアップを開くアクションを実行したら、次の方法でアラートにアクセスできます。
alert = driver.switch_to_alert()
今、私はあなたがそのようなことをすることができると思います:
if alert.text == 'A value you are looking for'
alert.dismiss
else
alert.accept
end
それが役に立てば幸い!
それが何であるかに関係なく、ポップアップを承認またはクリックする場合
_alert.accept
_
ここで、alert
はクラスSelenium.webdriver.common.alert.Alert(driver)
のオブジェクトであり、accept
はそのオブジェクトのメソッドです
そのような関数がない場合にフォームの送信を処理するjavascript関数に依存しますpostを使用してフォームを送信しようとします