Python Selenium,被动等待,直到满足某些页面条件,然后接管[重复]

Posted

技术标签:

【中文标题】Python Selenium,被动等待,直到满足某些页面条件,然后接管[重复]【英文标题】:Python Selenium, wait passively until certain page criteria are met, then take over [duplicate] 【发布时间】:2018-05-10 06:06:05 【问题描述】:

是否可以使用 Python Selenium 让脚本在后台被动运行,直到满足某些页面条件,然后让脚本接管浏览器的主动控制(如果相关,使用 Chrome 浏览器)。

我一直在尝试找到类似“on_page_load()”的事件,该事件将在每次页面加载时运行(理想情况下,它将检查页面上是否存在特定元素),然后分支到一个方法对浏览器的控制。到目前为止没有运气。

【问题讨论】:

为什么要Selenium在后台被动运行?你能总结一下你正在尝试自动化的确切 Manual Steps 吗? 很高兴保留这个问题,但我不同意这是 COLDSPEED 链接的页面的副本。我不是在问如何使用 Selenium 来请求页面并等到它被加载后再执行其他操作。我在问是否可以使用 Python / Selenium 挂钩到由每个页面执行的“page_load”事件,以便我可以包含测试何时向用户呈现页面上的特定信息。我怀疑 Selenium 不是完成这项任务的正确工具。 @DebanjanB 用例是我们有一个用户用来审查工作案例的门户网站。当他们看到工作案例中的特定项目时,用户会复制内容并将其保存到文件中。我想构建一个解决方案,允许我们的用户正常使用门户网站,但如果页面包含关键信息,它会自动保存关键信息。有问题的信息遵循使用正则表达式检测的规则。如上所述,Selenium 可能不是理想的工具,但我喜欢它完全按照用户体验呈现页面(即加载 JS 库等) 那么你到底卡在哪里了? @DebanjanB 我在任何地方都找不到启动 Selenium 并订阅页面加载事件的 Python 代码示例。我能找到的只是示例,例如 COLDSPEED 链接的示例,其中代码看起来像是以程序方式从头到尾驱动整个导航过程。 【参考方案1】:

您可以为此使用 selenium 的 javascript 运行程序。

driver.execute_script("
     window.onload = (function () // logic here)();")

您还可以在元素可用或回调时实现某种侦听器。

def hello(value, callback):
print value
callback()

def hi():
print "Hi"

hello(“hello”, hi)

【讨论】:

以上是关于Python Selenium,被动等待,直到满足某些页面条件,然后接管[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python selenium中等待元素出现及等待元素消失操作

selenium的显示等待和隐式等待区别

selenium

Rxjs 可观察等待,直到满足某些条件

Python编程_Selenium2Library源码分析

等待从 javascript 函数返回,直到满足条件