我有一个this.page.taskAssignment
类型的元素ElementFinder
。在我的UI测试中,我单击此元素,但没有任何反应。我怀疑我点击了错误的元素,这就是为什么我要查看点击的内容,为了做到这一点,我需要在调试器中看到html。
我在WebStorm调试器中写道:this.page.taskAssignment.element.getTagName().then(e => {console.log(e)})
但结果仍然是一个承诺,我找不到任何HTML。
问题:如何获取该元素的HTML,而不是Promise
,而是string
?
答案 0 :(得分:2)
您可以使用await关键字来获取值。
let formField = await element(by.formControlName(myField));
let formTag = await formField.getTagName();
let innerHtml = await browser.executeScript("return arguments[0].innerHTML;", formField);
(过去曾经有一个getOuterHtml()方法,但是根据protractor docs,硒已将其删除。)
如果出现错误,您只能使用await
是保留字,则它必须在async
函数中,例如在页面对象上。
class myPageObject{
async fillForm(myField) {
let formField = await element(by.formControlName(myField));
let formTag = await formField.getTagName();
let innerHtml = await browser.executeScript("return arguments[0].innerHTML;", formField);
// .... rest of code
}
}
有关页面对象的更多信息,请参见https://www.protractortest.org/#/page-objects。
答案 1 :(得分:1)
几种标识您要访问的元素的方法。
let elementLocator: ElementFinder;
要获取标签名:,请使用await elementLocator.getTagName()
,以便返回元素的标签名。
要获取元素的特定属性::如果需要定位器的类名,请使用await elementLocator.getAttribute('class')
//。您可以使用它来获取所有定位器属性。
注意:以上所有内容仅以string
的形式返回。
希望它对您有帮助