我为这一周解决这个onClick
而感到困惑。
我有一些案例可以从一个用于跟踪货物的网站上获取此页面。
“更多历史记录”是使用onClick
包含_blank的超链接。当我点击它时,它将带到新标签。我想使用casperjs废弃的页面位于新选项卡中。
我可以废弃第一个容器,但在那之后,我无法返回主页单击另一个容器历史记录以获取另一个页面
这是我的代码:
casper.start('http://www.wanhai.com/views/Main.xhtml');
casper.waitForSelector(x('//form[@id="cargoTrackListBean"]'),
function success() {
this.then(function() {
this.sendKeys(x("//input[@id='q_ref_no1']"), BL_number, {keepFocus: true});
});
this.thenClick(x('//input[@value="Query"]'));
this.wait(5000, function() {
this.then(function() {
links = this.evaluate(function () {
var elements = __utils__.getElementsByXPath('//a[contains(text(), "More History")]');
return [].map.call(elements, function(element) {
// return element.children[0].innerText.trim();
return element.getAttribute("onclick");
});
});
// this.echo("onclick :");
// this.echo(JSON.stringify(links));
var i = 2;
this.each(links,function(self,Container){
this.wait(10000, function() {
this.then(function() {
this.echo(i);
this.thenClick(x('//a[@onclick="'+Container+'"]'));
this.then(function() {
this.waitForPopup(/CargoTrackHistory\.xhtml/g,
function success() {
this.echo("popup");
this.withPopup(/CargoTrackHistory\.xhtml/g, function() {
this.wait(7000, function() {
this.capture(fs.workingDirectory.concat('/result/wanhai_').concat(i).concat('_look.png'));
this.then(function() {
this.thenClick(x('//a[contains(text(), "[Close Page]")]'));
this.then(function() {
i = i + 1;
});
});
});
});
}, function fail() {
this.echo("Gagal Popup");
this.capture(fs.workingDirectory.concat('/result/wanhai_').concat(i).concat('_broken.png'));
});
});
});
});
});
this.then(function() {
self.close();
});
});
});
},
function fail() {
fs.write(fs.workingDirectory.concat('/result/wanhai_').concat(BL_number).concat('_error.html'), this.getHTML() , 'w');
this.capture(fs.workingDirectory.concat('/result/wanhai_').concat(BL_number).concat('_error.png'));
this.echo ("Error!: Parsing HTML#input\n".concat(this.getHTML())).exit();
this.echo('gagal');
});
casper.then(function() {
this.echo("Success !");
// this.echo(result);
this.exit();
});
casper.run();
任何人都可以给我一些建议,谢谢:)