Нажмите в Angularjs, используя Casperjs

Я хотел бы нажать в angularjs, используя casperjs. Однако я не могу этого достичь. Веб-страница заполняет диалоговое окно каждый раз, когда я запускаю, поэтому мне нужно нажать.

Это то, что я пытаюсь нажать

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

заранее спасибо

3 ответа

Решение

Я решил эту проблему с помощью кода ниже:

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

Вы можете решить это так же:

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

Не используйте значение атрибута в селекторе. Вы можете присвоить кнопке уникальный класс или идентификатор, чтобы выбрать ее:

<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();
});
Другие вопросы по тегам