【问题标题】:AngulareJS e2e check each link in a listAngulareJS e2e 检查列表中的每个链接
【发布时间】:2012-11-18 17:06:59
【问题描述】:

我是 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' 不同。)

【问题讨论】:

  • 在 'element('li a')' 上执行 console.log 会得到什么

标签: javascript element angularjs


【解决方案1】:

已解决!!!

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

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

等等……

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

【讨论】:

    【解决方案2】:

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

    element('li a')
    

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


    所以,让 'element()' 选择列表中的特定项目这一看似无法解决的问题。

    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=”部分的文本字符串(如您在上面的控制台输出中所见) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2012-06-07
      • 2012-03-11
      相关资源
      最近更新 更多