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

如何使用量角器正确编写菜单选择测试?

陈法
2023-03-14

我试图理解如何在量角器测试中连接事件。下面是一个最小化的例子,如果包含了第二个browser . sleep(browser . sleep(3000)),那么测试就通过了。因为promise来自click-event(element(by . tagname(' mat-form-field))。click())现在应该已经解决了。我想知道为什么考试没有通过。

会不会是因为promise是在点击之后被解决的,所以在点击事件之后,但在它触发的动作完成之前?(延迟显示下拉菜单)

如果是这种情况,我应该如何创建一个测试,直到选择菜单可见,然后再继续从菜单中选择一个选项?

相关问题:在量角器的下拉菜单中选择元素

import {browser, by, element} from 'protractor';

describe('workspace-project App', () => {
  
    it('should select', () => {
      browser.get('http://localhost:4200/test').then(() => {
          // browser.sleep(4000);
          element(by.tagName('mat-form-field')).click().then(() => {
            // browser.sleep(3000);
            element.all(by.css('span.mat-option-text')).getText().then((values) => {
              element.all(by.css('span.mat-option-text')).filter((elem, index) => {
                return elem.getText().then((text) => {
                  return values[1] === text;
                });
              }).first().click();
              browser.sleep(2000);
            });
          });
        });
      });
});
<p>
  <mat-form-field>
    <mat-select [(value)]="selected">
      <mat-option>None</mat-option>
      <mat-option value="option1">Option 1</mat-option>
      <mat-option value="option2">Option 2</mat-option>
      <mat-option value="option3">Option 3</mat-option>
    </mat-select>
  </mat-form-field>
</p>

共有2个答案

颛孙兴旺
2023-03-14

检查元素是否存在于页面的DOM中并可见的期望。可见性意味着不仅显示元素,而且元素的高度和宽度都大于0。这与“invisibilityOf”相反。

苏硕
2023-03-14

如果你想在执行一个动作之前等待元素,你应该使用:http://www.protractortest.org/#/api?view = proutorexpectedconditions . prototype . visibility of

element.all(by.css('span.mat-option-text')).getText().then((values) => {
  element.all(by.css('span.mat-option-text')).filter((elem, index) => {
    return elem.getText().then((text) => {
      return values[1] === text;
    });
  }).first().click();
});

这部分代码应该被替换。现在您正在尝试对ElementArrayFinder执行getText()。您可以在ElementFinder上执行此操作。此外,您将在这些ElementArrayFinder上循环两次。在filter()中,您定义了索引,但不要在任何地方使用它。索引是可选参数-如果您不打算使用它-请忽略它。

值[1] === 文本;- 如果您想选择选项2,请尝试:

从“量角器”导入{browser,by,element};

describe('workspace-project App', () => {
  it('should select', () => {
    return browser.get('http://localhost:4200/test').then(() => {
      return element(by.tagName('mat-form-field')).click().then(() => {
        //add Expected Condition here
        return element(by.css('mat-option[value="option2"]')).click();
      });
    });
  });
});

 类似资料:
  • 我正在为我的网站登录和注销功能编写一个简单的量角器测试。登录测试运行正常,但我不知道如何编写注销测试,因为注销链接在将鼠标悬停在图标上后显示在下拉菜单中 我如何访问最后一个

  • 我是量角器的新手,在这里我尝试测试量角器的angularjs日期选择器。 我试图找到一种方法来做到这一点,而这篇文章是我唯一找到的东西,使用起来不太清楚 如果有人知道如何测试,请帮忙。 我需要的是选择今天的日期。 提前感谢:) < li >编辑- alecxe,这是我的日期选择器的屏幕截图。很抱歉,无法提供页面的链接。:(

  • 我正在尝试测试选择选项中的项目文本,但我的测试失败,并给出错误,以下是我的规范: 它('应该测试sorting_options文本', 函数() { 以下是我收到的错误: C: \wamp\www\第一个-角度-应用程序 如何解决这个问题?

  • 我的页面上有一个下拉菜单。我测试量角器的目标是单击此下拉菜单中的一个选项,并让量角器检查结果: 我的量角器测试看起来像: 如果你想知道的话,ptor.ignoreSynchronization是启用的,因为我的网页不断地轮询后端的一些更新。 量角器在我运行测试时抛出以下错误: 我不明白这个错误是关于什么的。这个元素肯定是可见的,因为当我查看页面的源代码时,我可以在DOM结构中看到它。 善意的忠告

  • 有很多方法可以做到这一点,我已经尝试了很多方法,但是在做自动测试时,我不能从下拉菜单中选择一个项目。 “选择”是出现在下拉菜单中的默认选择,我希望自动化测试选择其中一个元素,不管是哪个 这是HTML代码 这是我的量角器档案 我尝试过使用by.cssElement、by.xpath等。当我运行上面的代码时,我没有得到任何错误,但它也没有选择任何元素。谢谢

  • 问题内容: 我想知道是否有可能让jQuery 在下拉框中选择,例如第4个项目? 我希望用户单击一个链接,然后让该框更改其值,就像用户通过单击来选择它一样。 问题答案: 怎么样 对于现代版本的jquery,应使用代替