javascript - 评估函数中的 JS 无法执行
问题描述
我是新来的。当我尝试使用 casperjs.evaluate() 执行 JS 时,我发现事件没有执行。像这样的代码
casper = require("casper").create();
casper.start("https://www.google.com/",function(){
this.echo(this.getTitle());
this.wait(1000);
this.capture("homepage.png")
});
casper.then(function(){
this.evaluate(function(){
document.getElementsByClassName("gLFyf gsfi").value = "google"
})
this.echo(this.getTitle())
this.wait(1000)
this.capture("input.png")
});
casper.then(function(){
var tmp = this.evaluate(function(){
document.getElementsByClassName('gNO89b')[1].click();
});
this.echo(this.getTitle())
casper.wait(1000);
casper.capture("searchList.png");
});
casper.run();
“value”和“click”之类的事件应该在我的预期中执行,所以“searchList.png”应该显示“google”的所有搜索结果,但实际上我什么也没得到。顺便说一句,我确定“评估”功能中的 JS 是正确的。
有人可以帮我告诉我为什么会这样吗?提前致谢!
解决方案
该document.getElementsByClassName()
方法返回一个数组作为结果。所以,如果你想获取第一个带有gLFyf gsfi
类的 DOM 元素(即使只有一个),你应该这样调用它:
document.getElementsByClassName("gLFyf gsfi")[0].value = "google"
推荐阅读
- python-3.x - numba vectorize 中的 ValueError 用于累积
- javascript - 如何禁用primefaces中tab键的默认功能
- python - 如何更改熊猫数据框中的文本颜色
- reactjs - 获取滚动位置并自动滚动material-ui表
- javascript - 显示/隐藏完整的 div
- c# - 如何将原生颜色选项(形状填充、轮廓和字体颜色)添加到 vsto 功能区?
- command-line - 使用 Acrobat 命令行打印 PDF 时如何在灰度/彩色之间进行选择?
- amazon-web-services - 无服务器框架错误:解压后的大小必须小于 262144000 字节
- python - 为具有执行 TCP/IP 通信的多个线程的类的多个实例发出信号
- python - 显示一定数量的情节