CEF Python ExecuteJavascript不会设置输入元素的值
当我尝试browser.ExecuteJavascript(“警报('ExecuteJavascript起作用!”);”)时,效果很好(创建浏览器时会弹出警报)。当我尝试使用browser.ExecuteJavascript(“document.getElementsByName('q')[0].value=24;”)时,什么也没有发生。所以我知道ExecuteJavascript正在工作,但是为什么当我试图设置输入元素的值时,输入元素没有改变?下面是我正在尝试的代码,如果有人知道为什么特定的Javascript不会执行,我将非常感激CEF Python ExecuteJavascript不会设置输入元素的值,javascript,python,chromium-embedded,cefpython,Javascript,Python,Chromium Embedded,Cefpython,当我尝试browser.ExecuteJavascript(“警报('ExecuteJavascript起作用!”);”)时,效果很好(创建浏览器时会弹出警报)。当我尝试使用browser.ExecuteJavascript(“document.getElementsByName('q')[0].value=24;”)时,什么也没有发生。所以我知道ExecuteJavascript正在工作,但是为什么当我试图设置输入元素的值时,输入元素没有改变?下面是我正在尝试的代码,如果有人知道为什么特定的J
from cefpython3 import cefpython as cef
import platform
import sys
def main():
sys.excepthook = cef.ExceptHook
cef.Initialize()
browser = cef.CreateBrowserSync(url="https://www.google.com", window_title="Hello World!")
browser.ExecuteJavascript("document.getElementsByName('q')[0].value = 24")
cef.MessageLoop()
cef.Shutdown()
if __name__ == '__main__':
main()
刚创建浏览器后,DOM尚未就绪。使用鼠标上下文菜单打开“开发人员工具”窗口,您将看到错误。您应该使用LoadHandler来检测窗口何时完成网页加载或DOM何时准备就绪。选项:
main():
browser.SetClientHandler(LoadHandler())
class LoadHandler(object):
def OnLoadingStateChange(self, browser, is_loading, **_):
if not is_loading:
browser.ExecuteJavascript("document.getElementsByName('q')[0].value = 24")