单击动态生成的按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单击动态生成的按钮相关的知识,希望对你有一定的参考价值。

我将给出“从日期”和“到日期”并点击“创建”按钮。预期的产出是

  1. 通过下载按钮从“从日期”到“到日期”找到N个案例
  2. 在没有下载按钮的情况下,从“从日期”到“到日期”找到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");

}

如何检查“摘要”文本是否包含“找到0个案例......”然后不执行任何操作或者如果找到案例,则单击“动态生成的下载”按钮。

答案

请尝试下面的代码段,

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");
      }
    });

干杯!

另一答案

我建议使用: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();
}
另一答案

1)等待元素使用预期条件(EC)定位2)使用cssContainingText('locator',“string”)

要不然

使用以下代码编写动态xpath ::

以上是关于单击动态生成的按钮的主要内容,如果未能解决你的问题,请参考以下文章

导航抽屉活动:在按钮单击时从片段移动到片段

动态 TextView 未在片段中更新

单击 Jquery 中的按钮从动态生成的元素中获取数据

在片段中单击按钮播放声音(Kotlin)[重复]

单击动态生成的按钮

片段内 Listview 中动态视图的 onClick 侦听器