我刮使用硒的webdriver的Python點擊JavaScript彈出通過webdriver的
我的工作網頁上的網頁,有一個表格。我可以填寫表格,然後點擊提交按鈕。
它生成一個彈出窗口(Javascript警報)。我不確定,如何通過webdriver點擊彈出窗口。
任何想法如何做到這一點?
感謝
我刮使用硒的webdriver的Python點擊JavaScript彈出通過webdriver的
我的工作網頁上的網頁,有一個表格。我可以填寫表格,然後點擊提交按鈕。
它生成一個彈出窗口(Javascript警報)。我不確定,如何通過webdriver點擊彈出窗口。
任何想法如何做到這一點?
感謝
取決於處理表單提交 如果沒有這樣的功能,請嘗試使用後
我收到一封簡單的javascript警告,聲明「感謝您提交」,我只想按回車關閉彈出窗口。 – Kiran 2011-12-25 21:19:35
提交表單我使用Ruby綁定,但在這裏我在硒的Python中的JavaScript功能綁定2文檔: http://readthedocs.org/docs/selenium-python/en/latest/index.html
Selenium WebDriver內置支持處理彈出對話框。當您已經triggerd和行動,將打開一個彈出窗口,你可以用下面的訪問警報:
alert = driver.switch_to_alert()
現在,我想你可以做這樣的事情:
if alert.text == 'A value you are looking for'
alert.dismiss
else
alert.accept
end
希望它能幫助!
的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()
網頁(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()
switch_to_alert()現已在最新的Selenium Python綁定v 2.46.0中被棄用。改爲使用driver.switch_to.alert。資料來源:http://selenium-python.readthedocs.org/en/latest/api.html – SpartaSixZero 2015-07-01 20:55:40
如果你想接受或點擊彈出窗口,不管它是什麼,然後
alert.accept
哪裏 alert
是selenium.webdriver.common.alert.Alert(driver)
類 和0的對象是該對象的方法
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
僅供參考,switch_to_alert()現在已被棄用,並已被替換爲switch_to.alert http:// selenium-python。 readthedocs.org/en/latest/api.html#selenium.webdriver.remote.webdriver.WebDriver.switch_to_alert – demouser123 2015-06-21 07:01:59
@bad_deadpool感謝您的更新!此外:該鏈接是404 - 該文檔現在位於http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.switch_to_alert – 2017-05-08 22:36:51
感謝@GregSadetsky的更新。 – 2017-05-10 03:04:24
參見http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_Does_WebDriver_support_Javascript_alerts_and_prompts?這不是Python,但我認爲這是可以理解的。 – rubik 2011-12-25 20:54:32
雅。但它不適用於Python。我一直無法找到一個等價的函數來處理彈出窗口。 – Kiran 2011-12-25 21:18:49
[如何點擊並驗證是否存在彈出窗口(警告)]的可能重複(http://stackoverflow.com/questions/3084850/how-to-click-and-verify-the-existence-of-a -pop-up-alert) – Acorn 2011-12-25 23:53:22