Выберите все элементы по идентификатору с помощью транспортира с веб-страницы

#node.js #typescript #protractor

#node.js #typescript #транспортир

Вопрос:

Можем ли мы выбрать или извлечь все элементы по идентификатору на веб-странице с помощью транспортира? Мне нужно перечислить все элементы на веб-странице, и я попытался использовать приведенный ниже код, но получил ошибку:

свойство) WebdriverBy.css: (css: string) => По ожидаемым 1 аргументам, но получил 0.ts (2554) locators.d.ts(4, 11): аргумент для ‘css’ не был предоставлен.

 element.all(by.css()).each( function (el, idx) {            
    console.log(e1);           
}))
 

Ответ №1:

Как указано в вашем сообщении об ошибке, вам необходимо указать аргумент для селектора CSS, по которому вы хотите выполнить поиск. Например, by.css('.myclass') вернет все экземпляры .myclass .

Ответ №2:

  1. element(by.id('id')) выполнит работу https://www.protractortest.org/#/api?view=webdriver.By.id
  2. для всех элементов используйте element.all(by.id (‘идентификатор’)) https://www.protractortest.org/#/api?view=ElementFinder.prototype.all
  3. Не уверен, что вы имеете в виду, что вам нужно перечислить элемент, предполагая, что вам нужно перечислить их текст, тогда .getText() выполнит работу (только если все элементы видны) https://www.protractortest.org/#/api?view=webdriver .WebElement.prototype.getText
  4. используйте await вместо .then() . Я не знаю, какой курс вы выбрали, но он устарел https://www.protractortest.org/#/async-await

итак, в конечном итоге вы получите этот код

 it('test case', async () => {
  let text = await element.all(by.id('YOUR ID HERE')).getText();
  for (let i=0; i<text.length; i  ) {
    console.log(text[i]);
  }
})
 

Как вы видите, на все ваши вопросы можно было бы ответить, если бы вы прочитали официальную документацию protractor, что я настоятельно рекомендую сделать, если вы хотите освоиться с ней

И, наконец, идентификатор должен быть уникальным для страницы. Если вы имеете дело со страницей, содержащей несколько элементов с одинаковым идентификатором, сообщите об этом разработчикам


Постскриптум

Если вы не знаете идентификаторы заранее, сделайте это

 it('test case', async () => {
  let allElementsWithId = $('[id]')
  for (let i=0; i<(await allElementsWithId.count()); i  ) {
    console.log(await allElementsWithId.get(i).getAttribute('id'));
  }
})
 

Комментарии:

1. Я не знаю идентификаторы элементов заранее. Мне нужно получить все идентификаторы, доступные на этой странице. Есть ли способ добиться этого?

2. обновление ответа. Пожалуйста, примите, если помогло @Vijay

3. Привет. Я попробовал это, но в нем нет никаких идентификаторов на консоли. Страница открывается в Chrome, но в журнале консоли ничего не отображается.

4. я допустил 1 ошибку, исправил приведенный ниже код

5. Попробовал это, но опять та же проблема. Страница открывается в Chrome, но в журнале консоли ничего не отображается.