Транспортир зацикливания значения в sendKeys (index) - PullRequest
0 голосов
/ 01 октября 2018

Как можно отправить значение в sendKeys(value) в цикле?

Я попробовал разные варианты, чтобы понять это, но не повезло.

Numbers.ts

export const Numbers = {
 1: '777',
 2: '777',
 3: '777'
};

Texts.ts

export const Texts = {
  1: '111',
  2: '222',
  3: '333'
};

Code.ts

public async readFromFile(): Promise<void> {
  const numbers: object = Numbers;
  const texts: object = Texts;

  function* generatorNumbersAndTexts(objectNumbers, objectTexts) {
    let i: string;
    let j: string;

    for (i in objectNumbers) {
      for (j in objectTexts) {
        if (objectNumbers.hasOwnProperty(i) &&   objectTexts.hasOwnProperty(j)) {
          yield i;
          yield j;
        }
      }
    }
  }

  for (let indexI of generatorNumbersAndTexts(numbers, texts)) {
    for (let indexJ of generatorNumbersAndTexts(numbers, texts)) {
      texts.hasOwnProperty(indexJ)) {
      await this.clickSendMessage();
      try {
        await this.typeContacts(numbers[indexI]);
      } catch (e) {
        throw new Error(`There is no phone field ${e}`);
      }
      await this.typeMessage(texts[indexJ]);
      await this.sendMessage();
    }
   }
  }

Методы

Это методы, которые использовались внутри readFromFilemethod.

public async typeContacts(numbers: string): Promise<void> {
  await this.contactField.sendKeys(numbers + ';');
}

public async typeMessage(text: string): Promise<void> {
  await this.messageField.type(text);
}

public async type(text: string): Promise<void> {
  await this.clearInput();
  await this.sendKeys(text);
}

Возможно, это проблема обещаний Транспортира.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Это был вопрос транспортира.Это решение:

public async fromJSON(): Promise<void> {
  for (const key in Numbers) {
    if (Numbers.hasOwnProperty(key)) {
      for (const text in Texts) {
        if (Texts.hasOwnProperty(text)) {
          await this.screenshot(`./screens/1${key}.png`);
          await this.clickSendMessage();
          await this.screenshot(`./screens/2${key}.png`);
          await this.typeContacts(Numbers[key.toString()]);
          await this.typeMessage(Texts[text.toString()]);
        }
      }
    }
  }
}
0 голосов
/ 01 октября 2018

Трудно дать полный ответ, не видя функций, на которые вы ссылаетесь.Тем не менее, можно использовать sendKeys() при циклическом прохождении объекта.
Использование sendKeys () с циклом:

it('Should show a loop',async()=>{
  let elem = $(''); //Input value of element you are sending key to
  let values = {1:'111',2:'222',3:'333'} //test values
  for(let key in values){
    await elem.sendKeys(values[key]);
  }
}

В этом примере будет отправлено 111222333 в elem

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...