【问题标题】:Click the javascript popup through webdriver通过 webdriver 点击 javascript 弹出窗口
【发布时间】:2012-01-27 17:24:18
【问题描述】:

我在 Python 中使用 Selenium webdriver 抓取网页

我正在处理的网页有一个表格。我可以填写表格,然后点击提交按钮。

它会生成一个弹出窗口(Javascript Alert)。我不确定,如何通过 webdriver 点击弹出窗口。

知道怎么做吗?

谢谢

【问题讨论】:

标签: python selenium webdriver web-scraping alert


【解决方案1】:

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()

如果需要查看alert的文本,可以通过访问alert对象的text属性来获取alert的文本:

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()

【讨论】:

【解决方案2】:
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

【讨论】:

【解决方案3】:

我正在使用 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

希望对你有帮助!

【讨论】:

    【解决方案4】:

    试试下面的代码!对我来说工作得很好!

    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.
    

    【讨论】:

    • 很好的答案!这很有帮助!谢谢朋友:)
    【解决方案5】:

    这取决于处理表单提交的 javascript 函数 如果没有这样的功能,请尝试使用 post 提交表单

    【讨论】:

    • 我收到一个简单的 javascript 警报,上面写着“感谢提交”,我想按回车键关闭弹出窗口。
    【解决方案6】:

    如果你想接受或点击弹出窗口,不管它是什么

    alert.accept
    

    在哪里 alertselenium.webdriver.common.alert.Alert(driver) 类的对象 accept 是该对象的方法

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多