使用 Casperjs 单击 Angularjs

Click in Angularjs using Casperjs

我想使用 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);

提前致谢

不要在 selector 中使用属性值。你可以给你的按钮一个唯一的 class 或者 id 到 select 它:

<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();
});

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

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

你也可以这样解决:

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

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

<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")
})