使用 Python 3 和 Chromedriver 。
假设一个自动化的python程序正在网上冲浪,从不同的来源获取东西。
假设这些网站中的任何一个都会触发"您确定要离开此页吗?" 警告。
关键词:任何(以随机方式)这些网站。
问题:
我如何设置程序来处理这些警报,总是说:"是的,我想离开这个页面"。?
---更新---
可能的方法:
根据以下评论,我现在正在做:
def super_get(url):
driver.get(url)
driver.execute_script("window.onbeforeunload = function() {};")
现在使用标准super_get()
driver.get()
插入内容
你能想到更有效或更清洁的方式吗?
答案 0 :(得分:2)
在卸载前禁用警报:
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() {};")
希望它有所帮助。欢呼声。
答案 1 :(得分:0)
目标 通过getEventListeners(window)['beforeunload']获取所有侦听器,并将其全部删除。
步骤1。将DOMDebugger.getEventListeners放入window ['getEventListeners']
VB.NET
Dim myChromeDriver as ChromeDriver = getMyDriver()
myChromeDriver.ExecuteChromeCommand("Runtime.evaluate", New Dictionary(Of String, Object)() From {
{"expression", "window['getEventListeners'] = getEventListeners;"},
{"includeCommandLineAPI", True}})
我们不需要此Command的结果值。
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)
运行此脚本,直到getEventListeners(window)['beforeunload']为空为止。
删除所有侦听器后,此脚本将引发异常,您可以对其进行修复。
最后
oDriver.Navigate.GoToUrl("https://www.google.com")
“您确定..”警报应该消失。