gpt4 book ai didi

python - Cefpython GetText() 函数

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:05 26 4
gpt4 key购买 nike

大家好,我正在尝试将 url 的 html 打印到控制台。我从open source中免费的tutorial.py中获取了代码。 。这就是类:

class LoadHandler(object):
def OnLoadingStateChange(self, browser, is_loading, **_):
"""Called when the loading state has changed."""
if not is_loading:
# Loading is complete. DOM is ready.
# js_print(browser, "Python", "OnLoadingStateChange", "Loading is complete")
print('ready')
print(browser.GetMainFrame().GetText())

我添加了最后两行:

print('ready')
print(browser.GetMainFrame().GetText())

当我运行代码时,我收到错误消息:

TypeError: GetText() takes exactly one argument (0 given)

我在文档中看到我需要赋予函数参数StringVisitor(https://github.com/cztomczak/cefpython/blob/master/api/Frame.md#gettext)

什么是StringVisitor以及如何解决这个问题?

最佳答案

StringVisitor 是实现 Visit() 方法的类的对象。以下是您想要执行的操作:

class Visitor(object)
def Visit(self, value):
print(value)
myvisitor = Visitor()
class LoadHandler(object):
def OnLoadingStateChange(self, browser, is_loading, **_):
"""Called when the loading state has changed."""
if not is_loading:
# Loading is complete. DOM is ready.
print('ready')
browser.GetMainFrame().GetText(myvisitor)

myvisitor 放在 OnLoadingStateChange() 函数之外看起来很奇怪,但它是在 GetText() 之后保持该对象处于事件状态的多种方法之一 函数返回,因为 GetText() 是异步的。

您需要在cefpython中使用StringVisitor,因为许多CEF函数都是异步的,即,然后立即返回,而没有完成您希望它们执行的操作。当实际工作完成时,他们将调用您的回调函数。在您的示例中,当 GetText() 准备的文本准备就绪时,它将调用 StringVisitor 对象中的 Visit() 方法。这也意味着您需要在程序流程中以其他方式思考。

(我在Need to get HTML source as string CEFPython中回答过类似的问题)

关于python - Cefpython GetText() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48317638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com