Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CEF Python ExecuteJavascript不会设置输入元素的值_Javascript_Python_Chromium Embedded_Cefpython - Fatal编程技术网

CEF Python ExecuteJavascript不会设置输入元素的值

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

当我尝试browser.ExecuteJavascript(“警报('ExecuteJavascript起作用!”);”)时,效果很好(创建浏览器时会弹出警报)。当我尝试使用browser.ExecuteJavascript(“document.getElementsByName('q')[0].value=24;”)时,什么也没有发生。所以我知道ExecuteJavascript正在工作,但是为什么当我试图设置输入元素的值时,输入元素没有改变?下面是我正在尝试的代码,如果有人知道为什么特定的Javascript不会执行,我将非常感激

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何时准备就绪。选项:

  • 实现LoadHandler.OnLoadingStateChange:
  • 实现LoadHandler.OnLoadStart并注入js代码,该代码添加一个将执行实际代码的事件侦听器DOMContentLoaded
  • 请参见教程>客户端处理程序:

    另请参见LoadHandler的API参考

    
        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")