quot;Run all cellsquot; command in Google Colab programmatically(以编程方式运行Google Colab中的所有单元格(Q)命令(Q))
问题描述
我需要以编程方式从Google Colab菜单&Runtime&q;中运行某些命令&Run All&q;。它没有任何我可以从该页面上的javascript代码调用的明显&onclick&eventHandler。 页面上的其他";div";可以从js调用,对于exapmle,我可以使用js代码连接到运行时:
document.querySelector('#top-toolbar > colab-connect-button').shadowRoot.querySelector('#connect').click();
运行时菜单是一个下拉菜单,我尝试了.click()
其中的每个<div>
项,但没有效果。
另外";run all";命令有一个热键Ctrl + F9
,但是将事件调度到document
元素没有任何效果。但是我可以使用以下代码向笔记本内的任何输入字段发送Enter
命令:
document.querySelector('input.raw_input').dispatchEvent(new KeyboardEvent('keydown', {key: 'Enter'}))
使用Chrome代码检查器Ctrl + Shift + I
我查看了内部&q;运行所有&q;命令,结果如下:
<div command="runall" class="goog-menuitem" role="menuitem" id=":1w" style="user-select: none;"><div class="goog-menuitem-content" style="user-select: none;">Run all<span class="goog-menuitem-accel">Ctrl+F9</span></div></div>
所以我在页面上的检查器代码的"源"选项卡中进行了搜索,在https://colab.research.google.com/v2/external/external_polymer_binary.js文件中找到了";runall";的匹配项:
, Eja = X(new W({
id: "runall",
description: "Run all cells in notebook",
shortcut: IG(120)
120-是F9
按钮的按键代码。我还发现我认为需要菜单项的确切位置叫做:
case "runall":
d.runAll();
break;
但是我几乎不可能理解什么是d.
以及它的引用在哪里!
this.notebook.getKernel().isRunning()
或c.notebook.getKernel().restart()
,但是问题总是相同的:这些命令的根对象是什么?我尝试了document.
和window.
,但结果是";未定义";或";不是函数";。我想我可以在如下所示的字符串中调用runall()命令:
document.**SOMETHING I DONT KNOW**.runAll()
我非常不擅长前端/js,很难在模糊的代码中找到一些东西,但如果我们在javascript代码中有.runAll()
这样的函数,它连接到所需的菜单项i thick,就可以从控制台或javascript注入以编程方式运行
或者可以将键盘事件Ctrl + F9
分派到某个元素以运行此命令,因此问题是分派键盘事件所需的对象是什么
推荐答案
出于类似原因,我花了一些时间梳理该javascript文件,最终找到了如何实现此功能。
以下是以编程方式运行所有单元格的函数:
function runAll() {
const F9Event = {key: "F9", code: "F9", metaKey: true, keyCode: 120};
document.dispatchEvent(new KeyboardEvent("keydown", F9Event));
}
请注意,KeyboardEvent.keyCode
is deprecated支持KeyboardEvent.code
,但您仍需要在此处提供它(截至5/18/21),因为它是Colab用于检查键盘输入的属性。
您还可以互换使用metaKey: true
和ctrlKey: true
,而不考虑平台,因为Colab只检查是否存在需要它们的快捷方式的KeyboardEvent.metaKey
或KeyboardEvent.ctrlKey
。
有一个全局我还发现了许多其他有趣而有用的命令,比如
this.notebook.getKernel().isRunning()
或c.notebook.getKernel().restart()
,但是问题总是一样的:这些命令的根对象是什么?
colab
对象,它提供对某些(但不是全部)功能的访问。大多数内容都可以通过colab.global
访问,例如,要重新启动内核,可以使用:
colab.global.notebook.kernel.restart()
这篇关于以编程方式运行Google Colab中的所有单元格(&Q)命令(&Q)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:以编程方式运行Google Colab中的所有单元格(&Q)命令(&Q)
基础教程推荐
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 动态更新多个选择框 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06