Нажмите в 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();
});