我正在解析href
属性中的网址,但是当我做
casper.thenOpen(url, function() {
this.echo(this.getCurrentUrl());
});
显示空白。
我尝试访问的网页上的链接是在新选项卡中打开的,使用casper测试新选项卡比仅导航到同一选项卡上的新链接(我想是这样)稍微复杂一些这就是为什么我在变量中获取链接然后尝试打开它。
我在这里错过了什么吗?
代码段:
var href = '';
casper.then(function() {
this.test.assertExists(x('//a[contains(@href, "SUBSTRING OF URL")]'), 'the element exists');
href = casper.getElementAttribute(x('//a[contains(@href, "SUBSTRING OF URL")]'), 'href');
});
casper.thenOpen(href, function() {
this.echo(getCurrentUrl());
});
因此,当我回显href
时,其值与我想要导航到的网址相同。但getCurrentUrl
显示about:blank
。此外,网址会在不到一秒的时间内打开,但在我尝试casper.waitForUrl()
后的5000毫秒后会超时。
答案 0 :(得分:1)
Casper通过将所有请求推送到堆栈,然后运行它们来工作。所以,在这一点上你称之为:
casper.thenOpen(href, function() {
this.echo(getCurrentUrl());
});
href
还没有机会被定义。我相信以下的重构是解决它的一种方法:
casper.then(function() {
casper.open(href,function(){
this.echo("Did it work this time?");
});
});