我不知道为什么这个量角器代码适用于弹出窗口。 我的量角器版本: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();
答案 0 :(得分:1)
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 逐步继续量角器测试(不要等待太长时间,量角器会抛出超时异常)。