如何在调试器中获取ElementFinder的html,而不是承诺?

时间:2017-08-08 13:50:09

标签: debugging typescript protractor

我有一个this.page.taskAssignment类型的元素ElementFinder。在我的UI测试中,我单击此元素,但没有任何反应。我怀疑我点击了错误的元素,这就是为什么我要查看点击的内容,为了做到这一点,我需要在调试器中看到html。

我在WebStorm调试器中写道:this.page.taskAssignment.element.getTagName().then(e => {console.log(e)})但结果仍然是一个承诺,我找不到任何HTML。

问题:如何获取该元素的HTML,而不是Promise,而是string

2 个答案:

答案 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的形式返回。

希望它对您有帮助