2017-01-15 6 views
1

Я хотел бы щелкнуть в 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); 

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

ответ

1

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

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

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

<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

Спасибо за ваш ответ. Но оба они не работали. Я получаю эту ошибку, когда я пытаюсь «Подождать, чтобы истечь 5000 мс истек, вышел». – Quicksilver

+0

Это другая проблема, вы, вероятно, называете это до того, как загрузите угловые окончания, так что либо пытайтесь увеличить тайм-аут, либо найти способ отправить сообщение на ваш звонок пока загрузка не закончена @Quicksilver – Yaser

+0

Привет, извините за поздний ответ. Я решил эту проблему, используя коды ниже casper.waitUntilVisible ('. Close-j', function() { this.click (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") 
}) 

 Смежные вопросы

  • Нет связанных вопросов^_^