javascript - 量角器:如何单击模态对话框中的按钮(角度元素)
问题描述
我正在使用量角器框架为角度应用程序编写自动化测试。
测试场景:
点击按钮:创建 PDF 报告
- 出现模态对话框窗口
单击按钮:在模态对话框中立即运行报告
我在单击 modal-dialog 元素中的按钮时遇到问题。
我收到以下量角器错误
失败:过时的元素引用:元素未附加到页面文档,
失败:使用定位器找不到元素
测试
describe("Managing PDF Project Report", function () {
it("contain create PDF project for test purpose ", async function () {
await logIn();
await element(by.css(".btn-group.pull-right > button ")).click();
await element(by.css(".dropdown-menu.no-print")).element(by.css("li:nth-child(3) > a")).click();
await browser.wait(element(by.css(".modal-footer > div > button:nth-child(2)")).click(), 5000);
});
我也试图通过 ButtonText,ng-click 属性查找元素,但它也没有工作。
HTML
问题
我有点困惑,因为这个元素的行为不像 iframe 或浏览器弹出的那样。任何想法如何与此模式中的元素进行交互?
解决方案
您从哪个元素得到这些错误?如果是Run Report Now
按钮,您可以尝试使用 css:
element(by.css('[ng-click="createReport()"]');
此外,我建议添加几个显式等待以确保 Protractor 正确等待:
const EC = protractor.ExpectedConditions;
await browser.wait(EC.visibilityOf($$('.modal-dialog .modal-content .modal-footer')), 5000);
await browser.wait(EC.elementToBeClickable(element(by.css('[ng-click="createReport()"]')), 5000);
await element(by.css('[ng-click="createReport()"]').click();
推荐阅读
- c - 通过循环取电(没有 pow() 函数)
- php - 无法在 macOS mojave 上编辑我的 config.inc.php 文件,已下载 XAMPP
- ios - 如何确定链接是来自 IOS 应用程序的日历事件,然后将其添加到日历?
- javascript - 使用可扩展部件对表格数据进行排序
- java - 片段中的 ListView 未覆盖完整的父级
- java - 无法访问 Firstore 节点中文档的密钥
- javascript - 无法读取未定义的属性“机器人”
- xcode - 当我在 iPhone 上构建代码时,Xcode 上“无法启动”
- google-maps - Google Maps Platform 拒绝了您的请求。无效的请求。缺少“q”参数
- mysql - 如何快速更新多行(1 500 000)