javascript - 为什么无法在 GhostDriver/PhantomJSDriver 中禁用 JavaScript?

标签 javascript selenium phantomjs ghostdriver

我想在特定页面上的 PhantomJSDriver 中禁用 JavaScript,但是 this link here说这是不可能的,因为“整个 GhostDriver 将变得无法使用”。

有人可以解释一下吗,好像我才5岁,为什么会这样?

我是否有任何选项可以阻止 PhantomJSDriver 在页面上执行 JavaScript?

最佳答案

GhostDriver 是用 JavaScript 编写的,它使用 PhantomJS API将 WebDriver 线路协议(protocol)命令转换为 native PhantomJS 命令/调用。

PhantomJS 有两个上下文:驱动浏览器的外部(幻像)上下文和执行页面 JavaScript 的内部(页面)上下文。如果您在 PhantomJS 中禁用 JavaScript,则仅禁用页面上下文。您仍然可以做一些事情,但是您不能再使用 page.evaluate*() 了,这是进入页面上下文的大门。如果您仔细研究 PhantomJS API,您会发现没有函数可用于访问 DOM。这意味着您无法找到元素,无法查询元素的文本,无法更改元素,并且无法知道在哪里单击元素。

您所能做的就是创建屏幕截图 (page.render()) 并盲目单击并输入 (page.sendEvent())。这不足以让 WebDriver 协议(protocol)正常工作。

关于javascript - 为什么无法在 GhostDriver/PhantomJSDriver 中禁用 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785320/

相关文章:

ruby-on-rails - 带有 capybara 的 Selenium 无法使用设计登录/登录

javascript - 来自 phantomJS 的 POST 调用不会影响从 grunt 运行的服务器

javascript - 在 node.js 中使用 'webpage' Phantom 模块

php - 添加<form>后出现问题?

javascript - android 浏览器的随机 jquery 移动/Angular 内部错误

javascript - 菜单列表溢出 HTML(也在 iframe 中)

java - 如何在java中的for-each循环中删除和重置集合?

java - Firefox 启动但无法使用 selenium 打开 url

javascript - 阶乘乘以数字本身

javascript - 通过 captureBase64 截图后 CasperJS 无法正确显示字符