【问题标题】:Use a function inside browser.execute_script() (Selenium, Python)在 browser.execute_script() 中使用函数(Selenium,Python)
【发布时间】:2021-12-08 12:15:05
【问题描述】:

我正在尝试在控制台内使用带有 selenium python 的 javascript 代码,但我不知道如何。 这是函数:

function login(token) {
  setInterval(() => {
    document.body
            .appendChild(document.createElement `iframe`)
            .contentWindow.localStorage.token = `"${token}"`
  }, 50);
  setTimeout(() => {
    location.reload();
  }, 2500);
}
    
login(token);

我正在尝试使用 browser.execute_script() 中的函数,但我不知道如何添加它。

【问题讨论】:

    标签: javascript python selenium discord local-storage


    【解决方案1】:

    您可以编写一个函数来创建脚本并将其作为字符串返回。然后,您可以在需要时调用driver.execute_script() 来运行脚本。

    这应该可行:

    def generate_login_script(token):
        script = """
    setInterval(()=>{{document.body.appendChild(document.createElement `iframe`)
    .contentWindow.localStorage.token="{token}"}},50);
    setTimeout(()=>{{location.reload()}},2500);
        """.format(token=token)
        return script
    
    driver = webdriver.Chrome("D:\chromedriver\94\chromedriver.exe")
    driver.get("https://www.youwebsite.com")
    
    driver.execute_script(generate_login_script("testToken"))
    

    我已经在以 G.com 开头的著名搜索引擎上对此进行了测试,它确实有效。

    【讨论】:

    • 感谢您的回答,我在哪里输入令牌?我尝试将其放入“testToken”并重新加载页面,但我没有登录该帐户。我正在使用 chromedriver 版本 94,令牌通常可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2021-02-01
    相关资源
    最近更新 更多