ant*_*s87 2 javascript python chromium-embedded cefpython
当我尝试browser.ExecuteJavascript("alert('ExecuteJavaScript works!');")它工作正常(在创建浏览器时弹出警报).当我尝试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()
Run Code Online (Sandbox Code Playgroud)
刚刚创建浏览器后,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")
Run Code Online (Sandbox Code Playgroud)
请参阅教程>客户端处理程序:https: //github.com/cztomczak/cefpython/blob/master/docs/Tutorial.md#client-handlers
另请参阅LoadHandler的API参考.
| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |