当前位置: 首页 > 知识库问答 >
问题:

在量角器中链接所有语句

何华灿
2023-03-14

我的第一个堆栈溢出问题。。。。

我正在尝试在量角器中链接所有语句,但出现错误。

TypeError: Object [object Object] has no method 'all'

我正在查看以下页面上的 API 代码

http://angular.github.io/protractor/#/api?view=ElementArrayFinder.prototype.all

这表明您可以使用element.all(locator)。全部(定位器)

它以这个为例

var foo = element.all(by.css('.parent')).all(by.css('.foo'))

我的代码似乎非常相似,我很困惑为什么会出现这个错误。我尝试过将代码结构化,就像API示例上的代码一样。我也尝试过element.all(定位器)。element.all(定位器)。

我的目标是采取AREFS的Ng重复;找到一个文本等于r_string(这是一个字符串生成之前添加到页面;期望该元素存在;单击该元素;

一些尝试:

    var parent = element.all(by.repeater('labgroup in LabGroupService.allLabGroups'));
    var child = parent.all(by.xpath('//option[text() = \'' + r_string + '\']'));
    expect(child.count()).toBe('1');

然后呢?

    var elem = element.all(by.repeater('labgroup in LabGroupService.allLabGroups')).all(by.xpath('//option[text() = \'' + r_string + '\']'));
    expect(elem.count()).toBe('1');

最后,这是我正在使用的HTML的一个片段。

        <a ui-sref="root.user-management.labgroup({labgroupID: labgroup.id})" class="ng-binding" href="#/management/labgroup/43">1kvub4wgCvY9QfA</a>
    </dd><!-- end ngRepeat: labgroup in LabGroupService.allLabGroups --><dd ng-repeat="labgroup in LabGroupService.allLabGroups" class="ng-scope">
        <a ui-sref="root.user-management.labgroup({labgroupID: labgroup.id})" class="ng-binding" href="#/management/labgroup/47">3PNsny8lUMlMwBw</a>
    </dd><!-- end ngRepeat: labgroup in LabGroupService.allLabGroups --><dd ng-repeat="labgroup in LabGroupService.allLabGroups" class="ng-scope">
        <a ui-sref="root.user-management.labgroup({labgroupID: labgroup.id})" class="ng-binding" href="#/management/labgroup/42">c3NOI7Z3933ui3a</a>
    </dd><!-- end ngRepeat: labgroup in LabGroupService.allLabGroups --><dd ng-repeat="labgroup in LabGroupService.allLabGroups" class="ng-scope">

编辑----------------------------------------------------------------------------------------

我开始怀疑这是版本错误还是量角器错误。为了进行调试,我在API页面中加入了源代码。

    <div id='id1' class="parent">
      <ul>
        <li class="foo">1a</li>
        <li class="baz">1b</li>
      </ul>
    </div>
    <div id='id2' class="parent">
     <ul>
       <li class="foo">2a</li>
       <li class="bar">2b</li>
     </ul>
     </div>

以及来自源页面的示例。

var foo = element.all(by.css('.parent')).all(by.css('.foo'))
expect(foo.getText()).toEqual(['1a', '2a'])

我仍然会犯同样的错误。

TypeError: Object [object Object] has no method 'all'

编辑2-------------------------------------------------------------------------------

我设法通过在实际的html代码中添加“data-class=labgroup-link”并使用此量角器代码来解决这个问题。

    element.all(by.css('[data-class="labgroup-link"]')).filter(function(elem, index) {
        return elem.getText().then(function(text) {
            return text === r_string;
        });
    }).then(function(filteredElements) {
        expect(filteredElements[0].isPresent()).toBe(true);
        filteredElements[0].click();
        ptor.sleep(100);
    });

解决方案-

不得不升级量角器以获得最新的API。

共有1个答案

孔运良
2023-03-14

应工作给定:https://github . com/angular/量角器/blob/f7c3c 370 a 239218 f 6143 a/lib/量角器. js#L177

var foo = element.all(by.css('.parent')).all(by.css('.foo'));

ElementArrayFinder 没有 all 方法: 因此 https://github.com/angular/protractor/blob/master/docs/api.md#api-elementarrayfinder-prototype-get:

TypeError:对象[Object Object]没有方法“all”

也许你想

var foo = element(by.css('.parent')).all(by.css('.foo'));
// or shorter
var foo = $('.parent').$$('.foo');

做不到

var foo = element.all(by.css('.parent')).all(by.css('.foo'));
 类似资料:
  • 问题内容: 我正在用Python练习Selenium,我想使用Selenium获取网页上的所有链接。 例如,我想要http://psychoticelites.com/上所有标签的属性中的所有链接。 我写了一个脚本,它正在工作。但是,它给了我对象地址。我尝试使用标签来获取值,但是,它不起作用。 我当前的脚本: 问题答案: 好吧,您只需要遍历列表即可: 返回元素列表(注意“ elements”的拼写

  • 问题内容: 我正在用Python练习Selenium,我想使用Selenium获取网页上的所有链接。 例如,我想要http://psychoticelites.com/上所有标签的属性中的所有链接。 我写了一个脚本,它正在工作。但是,它给了我对象地址。我尝试使用标签来获取值,但是,它不起作用。 我当前的脚本: 问题答案: 好吧,您只需要遍历列表即可: 返回元素列表(注意“ elements”的拼写

  • 我试图在量角器测试用例中设置一个cookie。我们使用量角器3.3.0,Angular 1.5.x和Node.js 6.9.1 这是规格: 编辑: 我做了一些进一步的实验。请注意,我已经更改了域,并且在成功读取/写入cookie之前没有。 这是我得到的输出: 编辑4: 越来越近了!将域设置为(注意开头的点(.))似乎有效。会做进一步调查并报告。与此同时,如果有人能告诉我为什么这个点是重要的,以及为

  • 问题内容: 库具有此整齐的功能,可以解决多个promise并将其分散到单独的参数中: 如果对数组有保证,则可以使用点差代替。传播函数将值“传播”在实现处理程序的参数上。 在量角器中,我们尝试使用来自的内置函数。 问题: 是否可以使用“传播”功能? 用例示例: 我们已经实现了一个自定义的茉莉花匹配器,以检查元素是否聚焦。在这里,在进行相等比较之前,我们需要解决两个诺言。目前,我们正在使用和: 理想情

  • 问题内容: 当我在循环中使用Protractor时,循环索引()不是我期望的。 症状: 失败:索引超出范围。尝试访问索引为’x’的元素,但是只有’x’个元素 要么 索引是静态的,并且始终等于最后一个值 我的密码 例如: 要么 要么 问题答案: 发生这种情况的原因是因为量角器使用了诺言。 阅读https://github.com/angular/protractor/blob/master/docs

  • 问题内容: 我之前曾问过一个问题,有关将哪种语言用于AI原型。共识似乎是,如果我希望它速度很快,就需要使用Java或C ++之类的语言,但是Python / Perl / Ruby对于接口位将是不错的选择。 因此,这引出了另一个问题。将这些语言链接在一起有多么容易?哪种组合最有效?因此,如果我想拥有一个调用C ++或Java AI函数的Ruby CGI类型程序,那么容易吗?我在哪里寻求有关做这类事

  • 我想用量角器和BrowserStack运行测试。我跟踪了这个帖子,我背后的一个代理。我已安装browserstack local,并使用以下命令运行它: 一切似乎都起作用了,因为我有这样的信息: 谢谢

  • 问题内容: 我需要能够修改HTML文档中的每个链接。我知道我需要使用,但是我对实现该方法不是100%肯定的。如果有人可以引导我获得良好的资源或提供代码示例,将不胜感激。 谢谢。 问题答案: 也许这样的事情行得通吗?(不幸的是,我面前没有Python解释器)