【问题标题】:Python selenium function driver.execute_script() won't execute my code in the script?Python selenium 函数 driver.execute_script() 不会在脚本中执行我的代码?
【发布时间】:2020-10-06 01:37:43
【问题描述】:

在我的 python 脚本中,我使用 selenium 函数driver.execute_script(),它不会执行脚本中的所有代码。具体来说,一种代码有效,而另一些则无效。

此代码有效:

driver.execute_script("""
        let w = window.open("{}","_blank");
        w.console.log("asdf");
        """.format(link))

但这在这里不起作用:

driver.execute_script("""
        let w = window.open("{}","_blank");
        w.addEventListener("DOMContentLoaded", function () {
            w.console.log("asdf");
        });
        """.format(link))

我需要这个事件侦听器,因为这个函数的主体将使用 DOM 元素,但是当我使用事件侦听器键入代码时,python 只是跳过执行脚本,为什么? :(

【问题讨论】:

  • 首先您可以打印生成的字符串并在浏览器的 JavaScript 中直接使用它。其他问题可能是浏览器可以在您(重新)加载页面时从内存中删除此代码。
  • 在控制台/终端中运行时不会出错吗?当您使用 format() 时,{...} 在字符串中具有特殊含义 - open("{}" 但也在 function () {...} 中 - 您必须使用 {{ }} 才能正常使用它 { } - function () {{....}}
  • 是的,你是对的!花括号是个问题。谢谢:)

标签: javascript python selenium execute-script


【解决方案1】:

当您使用format() 时,{...} 在字符串中具有特殊含义-不仅在open("{}" 中,而且在function () {...} 中-您必须使用{{ }} 才能正常使用它{ } -

function () {{....}}

更多关于PyFormat

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 2015-06-05
    • 1970-01-01
    • 2022-11-10
    • 2019-12-29
    • 2019-10-28
    • 2019-05-17
    • 2017-08-30
    • 1970-01-01
    相关资源
    最近更新 更多