2017-01-15 23 views
1

我想点击使用casperjs的angularjs。但是,我无法做到这一点。网页每次运行时都会填充对话框,所以这就是为什么我需要点击。点击使用Casperjs的Angularjs

这是我尝试点击

<button class="ng-scope" trans="" ng-click="closeDialog(activeDialog, 'okButton');$event.stopPropagation();" ng-if="!activeDialog.yesno">Tamam</button> 

这是我在casperjs使用提前

casper.then(function() { 
this.evaluate(function() { 

    $($(document).find('button[ng-if="!activeDialog.yesno"]')).click(); 
}); 

this.wait(3000); 

感谢

回答

1

我解决了这个通过使用下面的代码问题:

casper.waitUntilVisible('.close-j',function(){ 
    this.click(x("//a[@ng-show='!activeDialog.hideCloseButton']"‌​)); 
    this.wait(5000); 
}); 
0

不要使用属性值在选择器中。您可以给您的按钮独特的class和id选择它:

<button class="yesno" trans="" ng-click="closeDialog(activeDialog, 'okButton');$event.stopPropagation();" ng-if="!activeDialog.yesno">Tamam</button> 

this.evaluate(function() { 

    $($(document).find('.yesno')).click(); 
}); 

,或者如果只有一个按钮,只需使用:

this.evaluate(function() { 

    $($(document).find('button[ng-if]')).click(); 
}); 
+0

感谢您的答复。但他们都没有工作。我遇到这个错误,当我尝试“等待超时5000ms过期,退出。” – Quicksilver

+0

这是一个不同的问题,你可能会调用,在角度完成加载之前,所以要么尝试增加超时或找到一种方式来张贴你的电话直到加载完成@Quicksilver – Yaser

+0

嗨,对不起,迟到的答案。我解决了这个问题,使用下面的代码: casper.waitUntilVisible('。close-j',function(){this.close(x(“// a [@ ng-show ='!activeDialog.hideCloseButton']”) ); this.wait(5000); }); – Quicksilver

1

你也可以这样解决:

this.click('button[ng-if="!activeDialog.yesno"]'); 

我有类似的问题。每次我登录网站时会弹出一个窗口,我必须将特定的文本字段放入并单击按钮。这是弹出窗口的类和其他属性的样子:

<button class="md-raised md-primary md-button md-button md-ink-ripple" aria-label="Okey", type="button"> 

这就是我如何解决它:

this.waitUntilVisible('button[aria-label="Okay"]', function() { 
    this.click('button[aria-label="Okay"]'); 
    this.echo("########### Okay button clicked") 
})