python selenium如何仅在函数可用时执行_script

Posted

技术标签:

【中文标题】python selenium如何仅在函数可用时执行_script【英文标题】:python selenium how to execute_script only when function is available 【发布时间】:2022-01-18 20:18:48 【问题描述】:

我想做 driver.execute_script('getDate();')

这个函数getDate()是在网页的javascript中定义的。如何确保函数定义首先加载?否则我会收到一条错误消息javascript error: no such function...

更新:我的用例是有一个 datepicker 元素在某个时候调用此函数。我想用这个函数直接获取/设置日期,而不是编写代码来查找日期选择器元素,点击日、月、年等,我觉得会很复杂

【问题讨论】:

使用元素的相关 html 更新问题。 只是好奇这些信息对解决方案有何帮助?如果它有帮助,基本上有一个 datepicker 元素会在某个时候调用这个函数。我想用这个函数直接获取/设置日期,而不是编写代码来查找日期选择器元素,点击日、月、年等,我觉得这很复杂 【参考方案1】:

您可以尝试使用等待直到:

// waituntil
while (typeof getDate !== "function") 
  task(i); // timeout


function task(i) 
  setTimeout(function() 
      // Add tasks to do
  , 2000 * i);


// now call getDate
getDate();

【讨论】:

谢谢,但我认为如果该函数尚不存在,这将跳过调用该函数?我想等到函数存在后再调用它。 我明白了,这对我来说并不清楚。我稍后会调整那个答案 好的,我已经更新了答案

以上是关于python selenium如何仅在函数可用时执行_script的主要内容,如果未能解决你的问题,请参考以下文章

Python 3.4 cx_freeze [WinError 5] 使用 Selenium - 仅在其他机器上

如何使用 selenium java/python 确定元素是不是在特定时间显示在屏幕上?

如何仅在代码第一次运行时在 python 中运行函数?

异步函数仅在面向 ECMAScript 2015 或更高版本时可用

如何在使用 Selenium 和 Python 调用函数之前等待特定 URL 加载

如何在 Python 中使用 selenium 滚动到页面末尾?