单击动态生成的按钮
clicking a dynamically generated button
我会给 "from dates" 和 "To dates" 并点击 "create" 按钮。预期输出为
- 从 "from dates" 到 "to dates" 找到了 N 个案例,带有下载按钮
- 从 "from dates" 到 "to dates" 发现了 0 个没有下载按钮的案例
第一种情况:
<div data-ng-if="canDownload()" class="ng-scope"
<h3 class="ABC" id="summary">N cases ound from "from dates" to "to dates"
<a data-ng-href="URL" id="summaryHREF"
<button class="XYZ" type="submit">Download<
第二种情况:
<div data-ng-if="noCases()" class="ng-scope"
<h3 class="ABC" >0 cases ound from "from dates" to "to dates"
我成功地测试了积极的场景(发现案例的地方)
let notes = element(by.id("summary"));
var EC = protractor.ExpectedConditions;
var flag = browser.wait(EC.visibilityOf(notes), 5000, '**** There are cases to Download ****');
if(flag){
this.downloadReg = element(by.xpath("//button[text()='Download']"));
this.downloadReg.click();
}
else{
console.log("No Cases found and Do Nothing");
}
如何检查 "summary" 文本是否包含“找到 0 个案例...”然后不执行任何操作,或者如果找到案例,则单击“动态生成的下载”按钮。
我推荐使用:
ExpectedConditions.textToBePresentInElement
无需使用 if else
- 当测试找不到预期的测试时,它将因超时而失败。
您可以先检查 DOM 中是否存在下载按钮,然后单击它。否则,什么也不做,继续前进。
这是假设 h3
元素在第二种情况下也有 'summary'
id 属性。
const notes = element(by.id('summary'));
await browser.wait(EC.visibilityOf(notes), 5000);
const downloadBtn = element(by.buttonText('Download'));
const flag = await downloadBtn.isPresent();
if (flag) {
await downloadBtn.click();
}
请尝试下面的代码片段,
browser.wait(EC.visibilityOf(element(by.css('#summary'))), 5000, '**** There are cases to Download ****').then(flag => {
if(flag){
this.downloadReg = element(by.xpath("//button[text()='Download']"));
this.downloadReg.click();
}else{
console.log("No Cases found and Do Nothing");
}
});
干杯!
1) 等待元素使用预期条件定位(EC)
2) 使用 cssContainingText('locator',"string")
否则
使用以下内容编写动态 xpath::
我会给 "from dates" 和 "To dates" 并点击 "create" 按钮。预期输出为
- 从 "from dates" 到 "to dates" 找到了 N 个案例,带有下载按钮
- 从 "from dates" 到 "to dates" 发现了 0 个没有下载按钮的案例
第一种情况:
<div data-ng-if="canDownload()" class="ng-scope"
<h3 class="ABC" id="summary">N cases ound from "from dates" to "to dates"
<a data-ng-href="URL" id="summaryHREF"
<button class="XYZ" type="submit">Download<
第二种情况:
<div data-ng-if="noCases()" class="ng-scope"
<h3 class="ABC" >0 cases ound from "from dates" to "to dates"
我成功地测试了积极的场景(发现案例的地方)
let notes = element(by.id("summary"));
var EC = protractor.ExpectedConditions;
var flag = browser.wait(EC.visibilityOf(notes), 5000, '**** There are cases to Download ****');
if(flag){
this.downloadReg = element(by.xpath("//button[text()='Download']"));
this.downloadReg.click();
}
else{
console.log("No Cases found and Do Nothing");
}
如何检查 "summary" 文本是否包含“找到 0 个案例...”然后不执行任何操作,或者如果找到案例,则单击“动态生成的下载”按钮。
我推荐使用: ExpectedConditions.textToBePresentInElement
无需使用 if else
- 当测试找不到预期的测试时,它将因超时而失败。
您可以先检查 DOM 中是否存在下载按钮,然后单击它。否则,什么也不做,继续前进。
这是假设 h3
元素在第二种情况下也有 'summary'
id 属性。
const notes = element(by.id('summary'));
await browser.wait(EC.visibilityOf(notes), 5000);
const downloadBtn = element(by.buttonText('Download'));
const flag = await downloadBtn.isPresent();
if (flag) {
await downloadBtn.click();
}
请尝试下面的代码片段,
browser.wait(EC.visibilityOf(element(by.css('#summary'))), 5000, '**** There are cases to Download ****').then(flag => {
if(flag){
this.downloadReg = element(by.xpath("//button[text()='Download']"));
this.downloadReg.click();
}else{
console.log("No Cases found and Do Nothing");
}
});
干杯!
1) 等待元素使用预期条件定位(EC) 2) 使用 cssContainingText('locator',"string")
否则
使用以下内容编写动态 xpath::