为什么无法在 GhostDriver / PhantomJSDriver 中禁用 JavaScript?
Why is not possible to disable JavaScript in GhostDriver / PhantomJSDriver?
我想在特定页面上禁用 PhantomJSDriver
中的 JavaScript,但是 this link here 说不可能,因为 "The whole GhostDriver will become unusable"。
谁能解释一下,我好像5岁了,为什么会这样?
我是否有任何选项可以以某种方式阻止 PhantomJSDriver 在页面上执行 JavaScript?
GhostDriver 是用 JavaScript 编写的,它使用 PhantomJS API 将 WebDriver 有线协议命令转换为本机 PhantomJS commands/calls。
PhantomJS 有两个上下文:驱动浏览器的外部(虚拟)上下文和执行页面 JavaScript 的内部(页面)上下文。如果在 PhantomJS 中禁用 JavaScript,则只会禁用页面上下文。您仍然可以做一些事情,但是您不能再使用 page.evaluate*()
,这是进入页面上下文的大门。如果您仔细查看 PhantomJS API,您会发现有 no 函数可用于访问 DOM。这意味着您无法找到元素,无法查询元素的文本,无法更改元素,也无法知道单击元素的位置。
您所能做的就是创建屏幕截图 (page.render()
) 以及盲目点击和输入 (page.sendEvent()
)。这不足以让 WebDriver 协议工作。
我想在特定页面上禁用 PhantomJSDriver
中的 JavaScript,但是 this link here 说不可能,因为 "The whole GhostDriver will become unusable"。
谁能解释一下,我好像5岁了,为什么会这样?
我是否有任何选项可以以某种方式阻止 PhantomJSDriver 在页面上执行 JavaScript?
GhostDriver 是用 JavaScript 编写的,它使用 PhantomJS API 将 WebDriver 有线协议命令转换为本机 PhantomJS commands/calls。
PhantomJS 有两个上下文:驱动浏览器的外部(虚拟)上下文和执行页面 JavaScript 的内部(页面)上下文。如果在 PhantomJS 中禁用 JavaScript,则只会禁用页面上下文。您仍然可以做一些事情,但是您不能再使用 page.evaluate*()
,这是进入页面上下文的大门。如果您仔细查看 PhantomJS API,您会发现有 no 函数可用于访问 DOM。这意味着您无法找到元素,无法查询元素的文本,无法更改元素,也无法知道单击元素的位置。
您所能做的就是创建屏幕截图 (page.render()
) 以及盲目点击和输入 (page.sendEvent()
)。这不足以让 WebDriver 协议工作。