如何获取元素的outerHTML,innerHTML和getText()

Sim*_*ion 15 javascript testing angularjs ng-grid protractor

我是量角器框架的新手,我已经尝试了一段时间来弄清楚如何获取outerHTML/InnerHTML/getText()(子元素),以便我可以测试元素<img>是否呈现在视图上.抬头,我们已经ng-grid和我正在尝试查看它的第一列,看它是否包含一个img元素,也检查它是否包含一个属性即src=res/someImg.png.

这就是我得到的

HTML

<div>
  <a>
    <div>
        <div>
            <span>
                <i><img src="res/someImg.png"></i>
            </span>
        </div>
        <div>
            ...
        </div>
        <div>
            ...
        </div>
    </div>
  </a>
</div>
Run Code Online (Sandbox Code Playgroud)

测试

it('should render an icon in agent list', function () {
    var row = element.all(by.repeater('row in renderedRows')).get(3);
    expect(row).not.toEqual(null); //pass
     expect(row.element(by.css('img')).getAttribute('src').getText()).toMatch(/someImg.png/);//fail with null
    expect(row.element(by.css('span')).outerHTML).toBe('<i><img src="res/someImg.png"></i>'); //fails
    expect(row.element(by.css('i')).innerHTML).toBe('<img src="res/someImg.png">'); //fails

});
Run Code Online (Sandbox Code Playgroud)

有人能说出我做错了吗?

ale*_*cxe 37

使用getAttribute()在所有3个案例-为src,outerHTMLinnerHTML:

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">'); 
Run Code Online (Sandbox Code Playgroud)

经过测试 - 适合我.

  • 当前唯一可行的解​​决方案。 (2认同)

小智 8

更明确一点:

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">'); 
Run Code Online (Sandbox Code Playgroud)

  • 请注意,[`getOuterHtml()`和`getInnerHtml()`现在已在WebDriverJS和Protractor中弃用](https://github.com/SeleniumHQ/selenium/blob/96ed95a97405fa267eea09c4008cda9e7703e84d/javascript/node/selenium-webdriver/CHANGES.md #转换摘要). (7认同)