gpt4 book ai didi

javascript - casperjs click() 标签如何不是 anchor

转载 作者:行者123 更新时间:2023-12-03 12:03:38 25 4
gpt4 key购买 nike

目标html就像

<script src="http://static.com/js/qiyi/config.js" type="text/javascript">
<dl class="selected">
<dt>
<span data-value="2014">2014年</span>
</dt>
</dl>
<dl>
<dt>
<span data-value="2013">2013年</span>
</dt>
</dl>

不是一个简单的 anchor 标记,所以在我的浏览器中,当我单击span标记时,它会调用config.js来做一些事情(我不知道它做了什么),它会改变内容。但是当我使用时

this.click()

模拟鼠标 Action ,不起作用。因为我知道 casperjs 可以像浏览器一样工作。如果我想抓取不同年份的内容,我该怎么做

我的代码是

var casper = require("casper").create({
clientScripts: [
"jquery-1.7.2.js",
"config.js"], //in url page call this js
remoteScripts: ["http://static.qiyi.com/js/qiyi/config.js"],//also the config.js

stepTimeout: 120 * 1000, //单步超时时间
pageSettings: {
loadImages: false
},
verbose: true,
logLevel: "error"
});

var fs = require('fs');
var filename = 'content.txt';

casper.on('resource.received', function(resource) {
casper.echo(resource.url);
});

casper.on('click', function(resource) {
casper.echo("click");
});

casper.on("page.error", function(msg, trace) {
this.echo("Error: " + msg, "ERROR");
});

casper.on("resource.error", function(resourceError {
console.log(JSON.stringify(resourceError));});

casper.start("http://www......");
casper.then(function() {
this.evaluate(function(){
document.querySelectorAll('[data-value="2013"]')[0].click();
//it does not work
});
this.echo("click");
});
casper.then(function() {
this.click('span[data-value="2013"]');
//it does not work
fs.write(filename, this.getHTML(), 'w');
this.echo("click");
});

casper.run();

最佳答案

如果你第一次使用js,你必须确定如何调试,包括page.error和捕获事件很重要。

casper.on("click", function(){this.echo();});
casper.on("page.error", function(){this.echo();});

您可以获得的事件发生。对于这个问题,点击后,必须有一段时间才能收到资源。

this.wait(5000, function(){fs.write(...);})

谢谢@ArtjomB。

关于javascript - casperjs click() 标签如何不是 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25279827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com