单击一个按钮以使用CasperJS下载文件

Sentient07

我想编写单元测试,以通过使用casperJS单击表单按钮来下载文件。我尝试使用document.getElementsByTagName 来获取按钮并以JavaScript的方式单击它。但是我收到一条错误消息:

TypeError: 'undefined' is not a function (evaluating 'inputs[1].click()')

未通过测试的代码段:

casper.then(function() {
    var inputs = document.getElementsByTagName('input');
    inputs[1].click();
});

当我尝试从浏览器的控制台执行相同的代码时,单击了按钮,并弹出了下载窗口。

我最初尝试assertExists在casperJS中检查按钮是否具有功能。断言通过,表明该按钮存在。另外,inputs数组有2个元素,一个是CSRF令牌的隐藏输入(我正在使用Django),另一个是我要单击的按钮。

Artjom B.

点击

PhantomJS(并扩展为CasperJS)具有两个上下文。只有页面上下文(evaluate())可以访问DOM。另一个问题是大多数元素未element.click()在PhantomJS中实现该功能,因此您需要使用另一种类型的click。

CasperJS提供了casper.click()几乎在所有情况下都可以使用的功能。它可以通过CSS选择器或XPath表达式选择要单击的元素。由于您要单击第二个输入,因此无法定义执行此操作的常规CSS选择器。在这种情况下,必须使用XPath表达式。CasperJS提供了一个XPath实用程序:

var x = require('casper').selectXPath;
...
casper.then(function(){
    this.click(x("(//input)[2]"));
});

请注意,在XPath表达式和CSS选择器中,计数从1开始。


正在下载

当您单击某些内容时,PhantomJS(以及扩展名CasperJS)不会触发文件下载。您将需要自己构建并发送请求。

有很多方法可以做到这一点。是一个例子。实际上,更好的方法是使用PhantomJS fork,它在新事件中本身支持文件下载。有关更多详细信息,请参见此答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击按钮下载文件

来自分类Dev

Flask:单击按钮后下载一个csv文件

来自分类Dev

单击链接以使用curl下载文件

来自分类Dev

使用单击按钮上的curl下载文件

来自分类Dev

使用请求模块下载文件会创建一个空文件

来自分类Dev

从另一个php脚本下载文件

来自分类Dev

创建一个删除下载文件的功能

来自分类Dev

“仅使用 'destfile' 参数的第一个元素”,循环下载文件

来自分类Dev

单击一个按钮以使用PyQt5 python创建一个新按钮

来自分类Dev

使用python硒单击并下载文件

来自分类Dev

单击Play Framework上的按钮后强制下载文件

来自分类Dev

如何从单击按钮的视图中下载文件?

来自分类Dev

我有一个来自ssh的下载文件,但需要50秒才能完成下载

来自分类Dev

单击“下载”链接,使用JQuery不会下载文件

来自分类Dev

在 Google App Engine 中使用 JavaScript 将可下载文件添加到另一个页面

来自分类Dev

创建一个按钮以下载cakephp上的文件

来自分类Dev

下载文件以使用phonegap下载文件夹ios / android

来自分类Dev

如何每次创建下一个下载文件名+ 1个值?

来自分类Dev

单击一个按钮以在PHP中运行casperJS并在带有按钮的同一PHP页面中生成结果

来自分类Dev

如何在 swift 中使用委托通知 UIViewController 在 xib 文件中单击了一个按钮?

来自分类Dev

javascript按钮下载文件

来自分类Dev

NGINX从后端的另一个URL下载文件

来自分类Dev

需要一个servlet从/ home / Bureau之类的路径下载文件

来自分类Dev

在“下载文件”对话框中添加一个选项?

来自分类Dev

创建一个链接,允许任何知道链接的人下载文件

来自分类Dev

如何使用casperjs单击随机链接并导航到另一个页面?

来自分类Dev

如何使用casperjs单击随机链接并导航到另一个页面?

来自分类Dev

使用htmlunit在javascript按钮后面下载文件

来自分类Dev

使用暂停和恢复按钮下载文件?

Related 相关文章

  1. 1

    单击按钮下载文件

  2. 2

    Flask:单击按钮后下载一个csv文件

  3. 3

    单击链接以使用curl下载文件

  4. 4

    使用单击按钮上的curl下载文件

  5. 5

    使用请求模块下载文件会创建一个空文件

  6. 6

    从另一个php脚本下载文件

  7. 7

    创建一个删除下载文件的功能

  8. 8

    “仅使用 'destfile' 参数的第一个元素”,循环下载文件

  9. 9

    单击一个按钮以使用PyQt5 python创建一个新按钮

  10. 10

    使用python硒单击并下载文件

  11. 11

    单击Play Framework上的按钮后强制下载文件

  12. 12

    如何从单击按钮的视图中下载文件?

  13. 13

    我有一个来自ssh的下载文件,但需要50秒才能完成下载

  14. 14

    单击“下载”链接,使用JQuery不会下载文件

  15. 15

    在 Google App Engine 中使用 JavaScript 将可下载文件添加到另一个页面

  16. 16

    创建一个按钮以下载cakephp上的文件

  17. 17

    下载文件以使用phonegap下载文件夹ios / android

  18. 18

    如何每次创建下一个下载文件名+ 1个值?

  19. 19

    单击一个按钮以在PHP中运行casperJS并在带有按钮的同一PHP页面中生成结果

  20. 20

    如何在 swift 中使用委托通知 UIViewController 在 xib 文件中单击了一个按钮?

  21. 21

    javascript按钮下载文件

  22. 22

    NGINX从后端的另一个URL下载文件

  23. 23

    需要一个servlet从/ home / Bureau之类的路径下载文件

  24. 24

    在“下载文件”对话框中添加一个选项?

  25. 25

    创建一个链接,允许任何知道链接的人下载文件

  26. 26

    如何使用casperjs单击随机链接并导航到另一个页面?

  27. 27

    如何使用casperjs单击随机链接并导航到另一个页面?

  28. 28

    使用htmlunit在javascript按钮后面下载文件

  29. 29

    使用暂停和恢复按钮下载文件?

热门标签

归档