在 browser.execute_script() 中使用函数(Selenium,Python)

Posted

技术标签:

【中文标题】在 browser.execute_script() 中使用函数(Selenium,Python)【英文标题】:Use a function inside 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() 中的函数,但我不知道如何添加它。

【问题讨论】:

【参考方案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,令牌通常可以正常工作。

以上是关于在 browser.execute_script() 中使用函数(Selenium,Python)的主要内容,如果未能解决你的问题,请参考以下文章

selenium执行JS

python selenium打开新窗口,多窗口切换

在selenium中一些相对常用的JavaScript事件

动态页面的操作(滚动屏幕到指定元素位置)和DIV滚动条滚动

2selenium点击被页面上其他元素遮住的控件

selenium中如何执行JS方法