Protractor 量角器选择下拉列表中的元素

Protractor 量角器选择下拉列表中的元素,protractor,Protractor,在下拉列表中查找元素时遇到问题。尝试在chrome中使用开发者工具识别它会导致在单击下拉列表时禁用本地化工具。html如下所示: <select ng-model="relation.rolle" name="relationType" required="" class="uniform form-control ng-touched ng-dirty ng-valid-parse ng-invalid ng-invalid-required" ng-class="::for

在下拉列表中查找元素时遇到问题。尝试在chrome中使用开发者工具识别它会导致在单击下拉列表时禁用本地化工具。html如下所示:

<select ng-model="relation.rolle" name="relationType" required="" 
  class="uniform form-control ng-touched ng-dirty ng-valid-parse ng-invalid 
  ng-invalid-required" ng-class="::formControlClass()" ng- 
  options="relationType.name as relationType.label for relationType in 
  relationTypes">
  <option value="" class="ng-binding">Velg...</option>
  <option value="0" label="Samboer">Samboer</option>
  <option value="1" label="Ektefelle">Ektefelle</option>
  <option value="2" label="Foresatt">Foresatt</option>
</select>

绒毛。。。
三宝
埃克特费尔
福雷萨特

有没有关于如何选择“Samboer”的提示?

希望这能奏效。我用的是这样的

element(by.cssContainingText('option', 'Samboer')).click();
(或)

您可以选择下拉列表并选择其值

在这里,我链接了下拉列表的元素定位器,然后选择了该选项


第一个示例更为通用,第二个示例更为具体,用于下拉列表。

Bharath发布的示例很简单,可以使用。您只需确保首先单击“选择”菜单。否则,您将得到元素未找到错误或不可单击错误。需要先打开菜单,然后才能单击
选项

我的例子有点复杂,但这里是我通常如何处理下拉菜单。我创建了一个通用函数,可用于任何选择菜单。您所要做的就是传入菜单元素和要查找的文本。我这样做是因为我正在使用的应用程序有很多下拉菜单。这样我就不必为菜单中的每个选项创建变量。一些菜单有很多选项,为每个菜单创建一个变量会很痛苦

public async selectDropdownOption(dropdown: ElementFinder, optionText: string): Promise<void> {
    await dropdown.click(); // open the menu

    const relevantOption = await dropdown.all(by.tagName('option'))
        .filter((element: ElementFinder) => {
            return element.getText().then((text: string) => {
                return text === optionText;
            });
        })
        .first();

    await relevantOption.click();
}

好奇的是,在这个具体的示例中,我如何指定单击select菜单?该函数的第一行打开菜单。您传入select元素,该元素还将包括所有子
选项
元素。
public async selectDropdownOption(dropdown: ElementFinder, optionText: string): Promise<void> {
    await dropdown.click(); // open the menu

    const relevantOption = await dropdown.all(by.tagName('option'))
        .filter((element: ElementFinder) => {
            return element.getText().then((text: string) => {
                return text === optionText;
            });
        })
        .first();

    await relevantOption.click();
}
const menu = element(by.name('relationType'));
selectDropdownOption(menu, 'Samboer');