нажимая динамически генерируемую кнопку - PullRequest
0 голосов
/ 21 февраля 2019

Я дам "из дат" и "до дат" и нажму кнопку "создать".Ожидаемый результат -

  1. N случаев, найденных от «от дат» до «дат» с помощью кнопки загрузки
  2. 0 случаев, найденных от «от дат» до «дат» безкнопка загрузки

В 1-м сценарии:

<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<

Во 2-м сценарии:

<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 найденных случаев ...", затем ничего не делать или найти случаи, а затем нажать кнопку Динамически генерируемая загрузка.

Ответы [ 4 ]

0 голосов
/ 25 февраля 2019

1) Дождитесь, пока элемент будет найден с использованием ожидаемых условий (EC). 2) Используйте cssContainedText ('locator', "string")

, иначе

запишите динамический xpath, используяследующее ::

0 голосов
/ 22 февраля 2019

Вы можете просто проверить, присутствует ли кнопка загрузки в 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();
}
0 голосов
/ 22 февраля 2019

Пожалуйста, попробуйте следующий фрагмент,

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

Ура!

0 голосов
/ 21 февраля 2019

Я рекомендую использовать: ExpectedConditions.textToBePresentInElement

Нет необходимости использовать if else - когда тест не найдет ожидаемый тест, он потерпит неудачу по таймауту.

...