【发布时间】:2019-01-05 00:24:06
【问题描述】:
我进行了一些广泛的搜索,并找到了一些代码示例来处理您期望的警报框;但是在处理可能出现或可能不出现的随机警报框时,我找不到任何东西。
我正在处理的网站一开始就非常顽固。没有任何类型的 ID、超时、网络故障等的几个元素。
当我运行测试时,有 98% 的时间它们运行时没有出现警告框错误,一切都很好。当警报框确实弹出另外 2% 的时间显示“错误:未找到 jQuery”时,我的所有其他测试都因意外警报错误而失败。
我的第一个问题是,是否是我的代码中的某些内容导致了错误发生? (见下面的代码)我的直觉告诉我它可能是网站。因此,如果是这种情况,有人可以向我展示一个可以处理“可能”警报框并接受它的示例,而不会通过我的测试吗? swithTab() 测试首先运行,然后 setDates() 测试接下来运行。页面加载时,切换选项卡后弹出警告框错误。我尝试使用延迟承诺来处理警报并捕获错误,但它甚至在捕获错误之前就失败了。它一碰到 browser.switchTo().alert() 就会失败,因为警报通常不存在。非常感谢我能得到的任何帮助。
this.switchTab = function(){
browser.getAllWindowHandles().then(function(handles){
browser.switchTo().window(handles[1]);
browser.sleep(2000);
var lockBoxTitle = element(by.css('td.title'));
browser.driver.wait(EC.visibilityOf(lockBoxTitle),5000);
});
}
this.setDates = function(yesterdayDate){
browser.sleep(3000);
//handleAlert();
startDateTextBox.clear();
startDateTextBox.sendKeys(yesterdayDate);
endDateTextBox.clear();
endDateTextBox.sendKeys(yesterdayDate);
retrieveBtn.click();
browser.sleep(5000);
expect(validateStart.getText()).toEqual(yesterdayDate);
expect(validateEnd.getText()).toEqual(yesterdayDate);
}
【问题讨论】:
-
如果您因为网站混乱而收到错误,这不是量角器的重点吗?您不应该计划网站的意外行为。量角器旨在捕捉意外行为,以便对其进行修复。
-
就解决方案而言,此错误是否出现在测试中的同一位置,还是随机发生
-
这可能是代码中的“BUG”。 jQuery/plugging/script 可能没有正确 syc 或损坏或覆盖代码。即使您通过了警报,其余的测试也可能无法通过。我有代码可以解除警报,但这是针对特定场景的。如果您可以向我显示警报框的屏幕截图,我会尝试是否可以找到解决方法。 ——
-
本,它每次都随机出现在同一个地方。 Twin,如果您手动单击警报框上的 OK,则测试的其余部分运行良好。我正在度假,所以我一回到工作岗位就会抓拍那个截图。
-
Twinckle,我已添加您要求的图像。谢谢!
标签: javascript google-chrome selenium-webdriver protractor alert