使用量角器从网页中按id选择所有元素



我们可以使用量角器在网页中按id选择或获取所有元素吗?我需要列出网页中的所有元素,我尝试使用下面的代码,但得到了错误:

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

正如您的错误消息所示,您需要为希望搜索的CSS选择器提供一个参数。例如,by.css('.myclass')将返回.myclass的所有实例。

  1. element(by.id('id'))将完成工作https://www.protractortest.org/#/api?view=webdriver.By.id
  2. 使用element.all(by.id('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]);
}
})

正如你所看到的,如果你阅读官方量角器文档,你所有的问题都可以得到回答,如果你想熟悉它,我强烈建议你这样做

最后,ID必须是页面唯一的。如果您正在处理的页面有多个具有相同id的元素,请向开发人员报告


注:

如果你事先不知道id的值,执行

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

相关内容

  • 没有找到相关文章