Проблема обработки выпадающего в транспортире с использованием машинописи - PullRequest
0 голосов
/ 29 января 2019

У меня проблемы с выбором выпадающего меню в транспортире

Мой дом выглядит так

Dropdown Dom

Это XPath для выборараскрывающийся список со значением Да

//label[contains(text(),"is your family safe?")]//parent::app-control-header//following-sibling::select//option[contains(text(),'Yes')]

Ниже приводится способ, которым я пытаюсь выбрать раскрывающийся список с XPath выше

Сначала я создал XPath, который извлекает блок выбора и сохраняется вdropDownBlock, как показано ниже

dropDownBlock = element(by.xpath('//label[contains(text(),"is your family safe?")]//parent::app-control-header//following-sibling::select'));

FamilysafeDropdown () {        
    selectDropdownByText(dropDownBlock, "yes");
}

Я создал функцию, которая принимает искатель элемента и строку и выбирает значение на основе переданной строки

public selectDropdownByText(dropdownElement: ElementFinder, text: string) {
    dropdownElement.click();
    dropdownElement.element(by.xpath('//option[contains(text(), "' + text + '")]')).click();
}

Моя проблема в том, что код всегда находитэлемент с xpath

//option[contains(text(), "Yes")]" и в моем DOM с этим XPath есть несколько выпадающих списков.

, поэтому я хотел выбрать значение с XPath

//label[contains(text(),"is your family safe?")]//parent::app-control-header//following-sibling::select//option[contains(text(),'Yes')]

ДонЯ не понимаю проблему здесь, может кто-то правильно указать мне.

1 Ответ

0 голосов
/ 30 января 2019

Проблема исходит от xpath, используемого в следующей строке кода:

dropdownElement.element(by.xpath('//option[contains(text(), "' + text + '")]')).click();

Вы должны использовать .//option[contains(text(), "' + text + '")], префикс . здесь означает, что поиск HTML-элемента начинается сdropdownElement.

Без . это означает, что поиск элемента HTML начинается с начала страницы HTML.

В XPath . представляет текущий узел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...