gpt4 book ai didi

javascript - Casperjs点击方法

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

总的来说,我对 casperjs 和 javascript 还很陌生,但我在其他领域有相当丰富的编码经验。目前,我尝试运行的代码只是转到一个网站并单击一个链接,这应该很简单,但我遇到了麻烦。

var casper = require('casper').create();
var x = require('casper').selectXPath;

casper.start('http://www.guru.com/emp/search.aspx?keyword=#&&page=1&sort=Earnings');

casper.then(function() {
this.test.assertExists({
type: 'xpath',
path: '//*[@class="paddingLeft5 txt11px txt666"]/a[text()="Next"]'
}, "Got Here");
});

casper.then(function() {
var firstUrl = this.getCurrentUrl()
});

casper.thenClick(x('//*[@class="paddingLeft5 txt11px txt666"]/a[text()="Next"]'), function() {
console.log("Woop!");
});

casper.waitFor(function check() {
return this.evaluate(function() {
return this.getCurrentUrl() != firstUrl;
});
}, function then() {
console.log(this.getCurrentUrl());
});


casper.run();

目前这在 5000 毫秒后超时,没有在 waitFor 中换行,它只是打印相同的 url 两次。

最佳答案

这应该是您要查找的内容。请注意,我将 firstUrl 移动为全局变量;这样,Casper.waitFor() 就可以访问它了。

此外,在 Casper.waitFor() 中使用 this.evaluate() 是不必要的,实际上会阻止接收错误消息,因为 thisfirstUrl 都存在于远程页面上。这是因为您想要在 Casper.evaluate() 内部访问的任何变量都必须在函数之后作为参数传递。

var casper = require('casper').create();
var x = require('casper').selectXPath;
var firstUrl;
casper.start('http://www.guru.com/emp/search.aspx?keyword=#&&page=1&sort=Earnings');

casper.then(function() {
this.test.assertExists({
type: 'xpath',
path: '//*[@class="paddingLeft5 txt11px txt666"]/a[text()="Next"]'
}, "Got Here");
});

casper.then(function() {
firstUrl = this.getCurrentUrl()
});

casper.thenClick(x('//*[@class="paddingLeft5 txt11px txt666"]/a[text()="Next"]'), function() {
console.log("Woop!");
});

casper.waitFor(function check() {
return this.getCurrentUrl() != firstUrl;
}, function then() {
console.log(this.getCurrentUrl());
});


casper.run();

这是我运行上面代码时得到的结果:

Woop!
http://www.guru.com/emp/search.aspx?keyword=#&&sort=Earnings&page=2

关于javascript - Casperjs点击方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15757609/

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