期望两个元素相等

Expect two elements to be equal

我想测试两个不同页面中的两个元素是否相等。这样做的原因是我需要检查一个已经在我的页面中工作的 "copy" 函数,所以两个元素(在本例中为 div)必须是相同的:

我发现元素对象的量角器中有一个名为 "clone" 的方法,但没有过多解释其用途。不管怎样,我试过这个:

// In the first page:
browser.get("/page1");
var clone1 = element(by.id("firstElem")).clone();

// then navigating to the other page
browser.get("/page2");
var clone2 = element(by.id("secondElem")).clone();

// then the expectation of them to be equal
expect(clone1).toEqual(clone2);

但是期望失败,堆栈跟踪非常重。还尝试比较:

expect(clone1 == clone2).toBeTruthy();

又失败了。

你能试试这个吗:

expect(angular.equals(clone1, clone2).toBe(true));

在此处阅读有关 angular.equals 的更多信息:https://docs.angularjs.org/api/ng/function/angular.equals

尝试不克隆

browser.get("/page1");
var clone1 = element(by.id("firstElem"));

browser.get("/page2");
var clone2 = element(by.id("secondElem"));

expect(clone1).toEqual(clone2);

What is "clone()" supposed to be used for?

我最近创建了一个密切相关的问题,您可以关注那里的更新:

How do I compare two divs in two separate pages for being identical?

根据您的最终目标,您可以使用 getOuterHtml() 比较元素的 "outer HTML" 表示,例如:

browser.get("/page1");
element(by.id("firstElem")).getOuterHtml().then(function(value) {
    browser.get("/page2");
    expect(element(by.id("secondElem")).getOuterHtml()).toEqual(value);
});