how to get an outerHTML, innerHTML, and getText() of an element how to get an outerHTML, innerHTML, and getText() of an element angularjs angularjs

how to get an outerHTML, innerHTML, and getText() of an element


Use getAttribute() in all 3 cases - for src, outerHTML and innerHTML:

expect(row.element(by.css('img')).getAttribute('src')).toMatch(/someImg.png/);expect(row.element(by.css('span')).getAttribute('outerHTML')).toBe('<i><img src="res/someImg.png"></i>'); expect(row.element(by.css('i')).getAttribute('innerHTML')).toBe('<img src="res/someImg.png">'); 

Tested - works for me.


A little more explicitly:

expect(row.element(by.css('img')).getAttribute('src')).toMatch(/someImg.png/);expect(row.element(by.css('span')).getOuterHtml()).toBe('<i><img src="res/someImg.png"></i>'); expect(row.element(by.css('i')).getInnerHtml()).toBe('<img src="res/someImg.png">'); 


As alecxe said on Aug 24 '16, "getOuterHtml() and getInnerHtml() are now deprecated in WebDriverJS and Protractor" (see comment from https://stackoverflow.com/a/27575804/3482730)

You should now use the following to get innerHTML code (as indicated here: https://github.com/angular/protractor/issues/4041#issuecomment-372022296):

let i = browser.executeScript("return arguments[0].innerHTML;", element(locator)) as Promise<string>;

Example using a helper function:

function getInnerHTML(elem: ElementFinder): Promise<string> {    return getInnerHTMLCommon(elem, elem.browser_);}function getInnerHTMLCommon(elem: WebElement|ElementFinder, webBrowser: ProtractorBrowser): Promise<string> {    return webBrowser.executeScript("return arguments[0].innerHTML;", elem) as Promise<string>;}const html = await getInnerHTML(browser.element(by.xpath("div[1]")));console.log(html);