Определить текст внутри класса div, минуя класс span - PullRequest
1 голос
/ 16 мая 2019

Я использую Selenium в Visual Studio. Написание тестового примера, в котором я хочу открыть выпадающее меню. Я хочу идентифицировать меню, используя уникальное имя для него.

Код выглядит так:

<div class="mat-select-value">
   <span class="mat-select-placeholder ng-tns-c34-170 ng-star-inserted">
   UniqueTextID
   </span>
</div> 

Мое нормальное решение для этого таково:

"//span[contains(@class,'mat-select-placeholder ng-tns-c34-170 ng-star-inserted')][contains(text(),'UniqueTextID')]"

Проблема в том, что класс span: "mat-select-placeholder ng-tns-c34-170 ng-star-вставлен" не всегда одинаков. Каждый раз, когда страница загружается снова, цифры «c34-170» меняются на новый набор номеров.

Мой вопрос: возможно ли идентифицировать «UniqueTextID», просто указав класс div: «mat-select-value», пропуская класс span?

Примерно так:

"//div[contains(@class,'mat-select-value')][contains(text(),'UniqueTextID')]"

Или, если мне нужно указать класс span, можно ли просто добавить начало класса span, то есть часть, которая не меняется каждый раз: "mat-select-placeholder"?

1 Ответ

1 голос
/ 16 мая 2019

Вам необходимо предоставить тег span span. Если вы не хотите использовать атрибут класса, вы можете использовать только текстовое значение, как.

//div[contains(@class,'mat-select-value')]/span[contains(text(),'UniqueTextID')]

OR

//div[contains(@class,'mat-select-value')]/span[contains(.,'UniqueTextID')]

Или, если вы хотите использовать тег span с атрибутом класса, также используйте starts-with

"//div[contains(@class,'mat-select-value')]/span[starts-with(@class,'mat-select-placeholder ng-tns-')][contains(text(),'UniqueTextID')]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...