我有一个在量角器测试中显示的模态。当我单独运行测试用例时,它可以正常工作,但是当我将其作为较大文件的一部分(当前为10个案例,有些冗长)运行时,它会使事情变慢,因此,模式打开和关闭的速度较慢。连锁效应是,当我尝试单击页面上的按钮时,由于模式(该模式现在应该已经关闭)仍然存在并阻塞了按钮,因此它崩溃了。
如何正确检测模态何时打开/关闭,以便我可以解决此问题?
谢谢!
(也是一个AngularJS应用程序)
答案 0 :(得分:1)
这些是我的手动等待助手功能:
static async forElementAbsent(element) {
return await new Promise<any>((resolve) => {
browser.driver.wait(ExpectedConditions.stalenessOf(element), 10000,
`Timed out waiting for element to be absent`).then(() => {
resolve();
});
});
}
static async forElementPresent(element) {
return await new Promise<any>((resolve) => {
browser.driver.wait(ExpectedConditions.presenceOf(element), 10000,
`Timed out waiting for element to be present`).then(() => {
resolve();
});
});
}
答案 1 :(得分:0)
在我们的测试中,我们正在等待手动显示模态。我们有辅助功能,例如
export async function forCondition(condition: () => boolean | PromiseLike<boolean>, timeout = 20000): Promise<boolean> {
try {
return await browser.wait(condition, timeout);
} catch (err) {
return false;
}
}
给定功能等待条件完成。因此,在您的特定情况下,您将不得不找出所显示模式的css选择器。
假设选择器为by.css('.modal.visible')
,那么如果我们要等待模式显示,就必须编写如下内容:
t.it('modal should be displayed', async function() {
// wait for modal to be displayed
var result = await forCondition(function() {
return element(by.css('.modal.visible')).isDisplayed();
});
expect(result).toBeTruthy();
});