无法点击量角器

时间:2016-08-22 12:53:38

标签: angularjs protractor angularjs-e2e

我不知道为什么这个量角器代码适用于弹出窗口。 我的量角器版本:4.0.3 chrome版本:chromedriver_2.22.exe

下面的

是我得到的错误消息

失败:没有警报打开       (会议信息:chrome = 52.0.2743.116)       (驱动程序信息:chromedriver = 2.22.397933(1cab651507b88dec79b2b2a22d1943c01833cc1b),platform = Windows NT 6.1.7601 SP1 x86_64)   堆:     NoSuchAlertError:没有警报打开       (会议信息:chrome = 52.0.2743.116)       (驱动程序信息:chromedriver = 2.22.397933(1cab651507b88dec79b2b2a22d1943c01833cc1b),platform = Windows NT 6.1.7601 SP1 x86_64)

弹出窗口的HTML脚本

<div class="modal-content" modal-transclude=""><div class="popupAlert popupAlert-full marginNone ng-scope">
    <div class="popup-header">
        <h2 class="modal-title ng-binding" id="myModalLabel">You are leaving this page </h2>
    </div>
    <div class="popup-body">
        <div class="row Margin0">
            <p class="text ng-binding">By continuing all the SLI data will be lost.</p>
        </div>
    </div>
    <div class="popup-footer">
        <div class="row Margin0">
            <a data-ng-click="cancel()" class="pull-right buttonLink2">Cancel
            <button type="button" class="pull-right swc_button" focus-element="autofocus" data-dismiss="modal" ng-click="ok()">Ok</button>
        </a></div><a data-ng-click="cancel()" class="pull-right buttonLink2">
    </a></div><a data-ng-click="cancel()" class="pull-right buttonLink2">
</a></div></div>

量角器代码

var popupAlert = browser.switchTo()。alert();

    var alertText = popupAlert.getText();
    console.log(" Alert text :" +alertText);
   popupAlert.accept();

//期望(popupAlert.accept).toBeDefined();

3 个答案:

答案 0 :(得分:1)

仅当您的弹出窗口是Javascript警告框时,

browser.switchTo().alert()才会起作用。在您的方案中,弹出窗口是使用HTML代码生成的,可以将其捕获为普通的webelement。使用下面的代码来接受弹出窗口。

element(by.css(".popupAlert")).isDisplayed().then(function(isDisplayed){    
  if(isDisplayed){
      element(by.css(".popup-footer a")).click() //to close the alert
      //or
     element(by.css(".popup-footer button")).click() //to accept the alert
   }
})

答案 1 :(得分:1)

我同意@ Sudarshan的答案,你没有javascript警报,这是一个简单的html弹出窗口。

然而,由于弹出窗口需要一段时间才能显示,根据我使用ExpectedConditions的经验,可以有效地捕获它。

var EC = protractor.ExpectedConditions;
var popup = $('popupAlert');
var okButton = element(by.buttonText('Ok')); //pls use appropriate locators incase this doesn't work!
popup.click();
browser.wait(EC.visibilityOf(okButton),5000);
okButton.click();

答案 2 :(得分:0)

检查您是否已编写代码以打开警报框。

这是通过使用 browser.pause()。这就像量角器中的断点,在执行操作打开警报框并使用键 c 逐步继续量角器测试(不要等待太长时间,量角器会抛出超时异常)。