我正在使用Python的Selenium webdriver来爬取一个网页。
这个网页有一个表单,我可以填写表单并点击提交按钮。
之后会弹出一个JavaScript Alert窗口,但我不确定如何通过webdriver来点击这个窗口。
您有什么想法吗?
谢谢!
我正在使用Python的Selenium webdriver来爬取一个网页。
这个网页有一个表单,我可以填写表单并点击提交按钮。
之后会弹出一个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()
网页(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更多信息,请查看此链接
alert.accept
alert
是 selenium.webdriver.common.alert.Alert(driver)
类的对象,而 accept
是该对象的方法。
alert = driver.switch_to_alert()
现在我猜你可以做这样的事情:
if alert.text == 'A value you are looking for'
alert.dismiss
else
alert.accept
end
希望能对你有所帮助!
alert = driver.switch_to.alert
try:
alert.accept() #If you want to Accept the Alert
except:
alert.dismiss() #If You want to Dismiss the Alert.
这取决于处理表单提交的JavaScript函数,如果没有这样的函数,请尝试使用POST提交表单