#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:
element(by.id('id'))
выполнит работу https://www.protractortest.org/#/api?view=webdriver.By.id- для всех элементов используйте element.all(by.id (‘идентификатор’)) https://www.protractortest.org/#/api?view=ElementFinder.prototype.all
- Не уверен, что вы имеете в виду, что вам нужно перечислить элемент, предполагая, что вам нужно перечислить их текст, тогда .getText() выполнит работу (только если все элементы видны) https://www.protractortest.org/#/api?view=webdriver .WebElement.prototype.getText
- используйте
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, но в журнале консоли ничего не отображается.