我们可以使用量角器在网页中按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
的所有实例。
element(by.id('id'))
将完成工作https://www.protractortest.org/#/api?view=webdriver.By.id- 使用element.all(by.id('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]);
}
})
正如你所看到的,如果你阅读官方量角器文档,你所有的问题都可以得到回答,如果你想熟悉它,我强烈建议你这样做
最后,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'));
}
})