代码之家  ›  专栏  ›  技术社区  ›  Álvaro N. Franz

Python和Selenium-在离开页面时禁用警报

  •  3
  • Álvaro N. Franz  · 技术社区  · 7 年前

    使用 .

    假设这些网站中有一个 “你确定要离开此页面吗?” 警觉的

    关键词: 任何 (以随机方式)的网站。

    问题

    ---更新---

    :

    基于以下评论,我现在正在做:

    def super_get(url):
        driver.get(url)
        driver.execute_script("window.onbeforeunload = function() {};")
    

    现在使用 super_get() driver.get()

    你能想出更有效或更干净的方法吗?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Álvaro N. Franz    7 年前

    卸载前禁用警报 :

    def super_get(url):
        driver.get(url)
        driver.execute_script("window.onbeforeunload = function() {};")
    

    现在使用 super_get(whatever_url) driver.get(whatever_url)

    禁用页面中的所有警报

    def super_get(url):
        driver.get(url)
        driver.execute_script("window.alert = function() {};")
    

        2
  •  0
  •   Bruce    6 年前

    球门 通过getEventListeners(window)['beforeunload']获取所有侦听器,并将其全部删除。

    步骤1。放入DOMDebugger。getEventListeners到窗口['getEventListeners']

    Dim myChromeDriver as ChromeDriver = getMyDriver()
    myChromeDriver.ExecuteChromeCommand("Runtime.evaluate", New Dictionary(Of String, Object)() From {
    {"expression", "window['getEventListeners'] = getEventListeners;"},
    {"includeCommandLineAPI", True}})
    

    我们不需要这个命令的结果值。

    includeCommandLineAPI=True是必需的,否则它将引发异常,因为getEventListeners是脚本执行上下文中未定义的CommandLineAPI

    步骤2.删除所有侦听器

    Dim jsCmd As String = "var eventlistener = window['getEventListeners'](window)['beforeunload'][0];" &
    "    window.removeEventListener('beforeunload', " &
    "    eventlistener.listener, " &
    "    eventlistener.useCapture); "
    myChromeDriver.ExecuteScript(jsCmd)
    

    当删除所有侦听器时,此脚本将引发异常,您可以修复它。

    oDriver.Navigate.GoToUrl("https://www.google.com")