2

我是 AngularJS 的新手,我将主要使用 e2e 部分(使用 jasmine)。经过几天的无处可去(我发现文档至少可以说是厌食症!)我想知道是否有人可以在这里帮助我:

网站生成 a=href 链接的 html 列表。我可以像这样使用 angularjs e2e 来“点击”链接:

element('li a').click();

美好的。但这里有两个问题:

  1. 如果列表中有 6 个链接,这个链接是点击哪个链接??(在正在测试的 html 代码中,这些链接没有唯一的 id,有些可能是完全相同的引用/url 等。)?

  2. 如何遍历列表中的每个链接?即 element(links[1]).click() -> ... 做任何事然后导航回来 -> element(links[2]).click() -> ... 做任何事然后导航回来 ... 等等。 ..

(注意:angularjs e2e 的 'element' 版本与 'angular.element' 不同。)

4

2 回答 2

3

解决了!!!

element('li:eq(0) a').click(); //<-- clicks the first link.

element('li:eq(1) a').click(); //<-- clicks the 2nd link.

ETC...

这里的一位开发人员向我展示了这一点,但我不知道他是怎么知道的!

于 2012-11-21T17:50:03.400 回答
2

好的 - 以防其他人好奇(我不可能是地球上唯一一个试图弄清楚这些东西的人!)我已经为自己解决了问题 1:通过将值硬编码到列表中,我发现

element('li a')

... 将选择最后列出的项目。


因此,关于使“元素()”选择列表中的特定项目的看似无法解决的问题。

console.log("ROYDEBUG: " + element('li a'));

...将“ROYDEBUG:[object Object]”返回到控制台日志。

我可以让它识别出有“x”列表项。如果我这样做:

   element('li a').query(function (selectedElements, done) {
        selectedElements.each(function(idx,elm)
            {
                var thisOne = selectedElements[idx]; //<-- (same as "= this;").
                console.log("ROYDEBUG:  " + idx + " - " + thisOne);
                //element(thisOne).click();                //<-- doesn't work :(
                //element(this).click();                   //<-- doesn't work :(
                //element(selectedElements[idx]).click();  //<-- doesn't work :(
            });
        done();
   });

然后我在控制台中得到这个:

ROYDEBUG: [object Object]
ROYDEBUG:  0 - http://localhost:9876/app/index.html#/coupon/100
ROYDEBUG:  1 - http://localhost:9876/app/index.html#/coupon/100
ROYDEBUG:  2 - http://localhost:9876/app/index.html#/coupon/100
ROYDEBUG:  3 - http://localhost:9876/app/index.html#/coupon/100
ROYDEBUG:  4 - http://localhost:9876/app/index.html#/coupon/100
ROYDEBUG:  5 - http://localhost:9876/app/index.html#/coupon/100

...所以它知道列表中有 6 个项目。但是我不能对这些返回的“元素”使用“element().click()”,因为它们只是每个链接的“href=”部分的文本字符串(如您在上面的控制台输出中所见) .

于 2012-11-20T12:47:46.060 回答