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

如何使用“Angular Material 2”和“Protractor”选择选项?

南门棋
2023-03-14

我正在用量角器编写一些e2e测试。我的应用程序是Angular材料2应用程序。在我的测试中,我想按值选择md-select的一个选项。当我检查打开的md-select时,我看到了md-选项项。选项的值在一个属性ng-反映-值中。

假设我有一个值为“optionA”的选项。如何通过该值选择某个选项?

我试过这个:

element(by.name('myselect')).click();
$$('.mat-option').then((options) => {
  ...
});

在里面,我看到了选项的正确数目,但是我如何选择值为“of options”的选项呢?

共有3个答案

盛辰沛
2023-03-14

这对我很管用:

    element.all(by.cssContainingText('span.mat-option-text', "option text to search for")).click();

从这个问题中得到了答案:如何在量角器中按量程值定位元素?

金瑞
2023-03-14

您可以做的是通过在选择器中添加期望值来使您的css-selector“动态”。例如

// I've place the expected value in a var to make it more clear
const optionValue = 'your-option-value';

// Open select
element(by.name('myselect')).click();
// Click on the option with your selected value
$(`.mat-option[value="${optionValue}"]`).click();
勾学博
2023-03-14

这个例子有点粗糙,但它展示了如何做你想做的事情:

html:

<mat-form-field id="your-id">
    <mat-select>
        <mat-option [value]="1">1</mat-option>
        <mat-option [value]="2">2</mat-option>
    </mat-select>
</mat-form-field>

ts:

function selectOptionByOptionValue(selectFormFieldElementId, valueToFind) {

  const formField = element(by.id(selectFormFieldElementId));
  formField.click().then(() => {

    formField.element(by.tagName('mat-select'))
      .getAttribute('aria-owns').then((optionIdsString: string) => {
        const optionIds = optionIdsString.split(' ');    

        for (let optionId of optionIds) {
          const option = element(by.id(optionId));
          option.getText().then((text) => {
            if (text === valueToFind) {
              option.click();
            }
          });
        }
      });
  });
}

selectOptionByOptionValue('your-id', '1');
 类似资料:
  • 我想处理一个选择菜单的测试场景,其中 spec 将选择一个随机选项,而不是当前选择的选项。我似乎找不到一个有效的定位器或方法可以让我做到这一点。 策略1:获取的当前索引,并从其他索引中随机选择 策略2:获取-获取数组的长度并选择随机数组。此选择器似乎忽略了部分,并返回选项总数 由于我对量角器很陌生,我真的没有看到一种方法来查看API。请问有什么提示吗?

  • 我是一个新生的QA,我在这里尝试编写一个Protractor脚本,从下拉列表中选择一个选项。我的下拉列表中有两个选项,我正在尝试从数字中选择它。 这是我正在使用的代码。 默认情况下,选项 2 在页面加载时处于选中状态。我需要的是从下拉列表中选择选项1。但是,我的代码不会这样做。 下面是选择选项的代码片段。 提前感谢:)

  • 我有一个SPA,其中有多个具有相同类的div。我希望量角器选择可见的div并单击它。我一直得到,这让人相信它得到了一些不在这个特定页面上的元素(也许?)。我还得到,这再次让我认为它不是单击可见的,而是不可见的。 这是我的规格: 如何选择可见的 并单击它?

  • 我想调用一个函数时,选择的任何选项。类似于这样: 但不知何故不起作用。有人能帮忙吗。 请注意 我不想捕获更改事件,如果我选择已经选择选项,则不会触发更改事件

  • 我有一些连接的选择工作良好。顺便说一句,我想把这些选择转换成很小的选择,但我发现这样做有些困难。例如,我有一个ID为的select。当我选择的一个大于零的选项时,应该会出现其他选择。之后,当我更改级联选择的选项(例如在中)时,该选项会正确更改。但是,当我选择另一次时,中的选项zero和我选择另一次时,中大于zero的选项会出现,而另一次选择中已经选择了选项。 这是我的javascript代码: 这

  • 我正在尝试使用Capybara(2.1.0)从下拉菜单中选择一个项目。 我想通过数字来选择(意思是选择第二个、第三个等选项)。 我疯狂地搜索了所有的东西,但都没有结果。 但会导致以下错误: 那么我如何从下拉(使用Capybara)中选择第一个、第二个、第三个等选项呢?