【问题标题】:How to set window.alert when redirecting重定向时如何设置window.alert
【发布时间】:2019-07-23 08:27:29
【问题描述】:

我正在抓取一些网页以进行研究。 重定向到其他页面时,我想在下面注入 javascript 代码:

window.alert = function() {};

我尝试使用 WebDriverWait 注入下面的 javascript 代码,以便 selenium 可以在驱动程序重定向到新页面后立即执行代码。但它不起作用。

while (some conditions) :
  try:
    WebDriverWait(browser, 5).until(
                lambda driver: original_url != browser.current_url)
    browser.execute_script("window.alert = function() {};")
  except:
    //do sth


  original_url = browser.current_url

似乎驱动程序在页面加载后执行javascript代码,因为重定向页面中的警报正在显示。

【问题讨论】:

    标签: python-3.x selenium-chromedriver


    【解决方案1】:

    【讨论】:

    • 我刚才试了一下。我替换了“window.alert = function() {};”到“window.onbeforeunload = function(){ window.alert = function() {};}”。但不幸的是,正如我所提到的,javascript 代码似乎是在页面的 javascript 加载后注入的。页面的警报再次显示。
    • 我认为您不需要完整的代码。我的意思是你不需要让网络驱动程序等待。只需使用:browser.execute_script("window.alert = function() {};")
    • 我发这个问题的原因是执行的javascript代码重定向到其他页面后没有用。如果我留在一页中,它会很好地工作,但如果页面使用 location.href 或其他重定向,它不会持续。所以这就是为什么我让网络驱动程序等到重定向,然后执行browser.execute_script("window.alert = function() {};")
    • 我明白你的意思,我找到了几种方法,但不确定。
    【解决方案2】:

    我以其他方式解决了我的问题。 我用browser.switch_to_alert 试了又试,但没有成功。然后我发现它已被弃用,因此无法正常工作。我使用以下代码检查了警报并每隔 1 秒将其关闭:

    while *some_condition* :
            try:
                Alert(browser).dismiss()
            except:
                print("no alert")
                continue
    

    这很好用,在 Windows 10,python 3.7.4 中

    【讨论】:

      猜你喜欢
      • 2020-08-05
      • 2020-08-11
      • 2021-08-29
      • 2012-05-18
      • 2018-01-16
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      相关资源
      最近更新 更多