Селен C#: получить элемент по названию - PullRequest
0 голосов
/ 29 марта 2020

Я хочу получить элемент по названию, я не знаю, есть ли у нас универсальное решение для этого в Selenium C#. Вот пример HTML

   <div class="student">
     <a href="abcxyz.com">
        <span class="title"> ZZZ</span>
     </a>
   </div>

И еще один пример

   <div class="page">
      <a href="asdf.com" class="button-1" title="ZZZ"> </a>
   </div>

Конечно, если только одну страницу, я сделаю это как

   FindElement(By.ClassName("page")).GetAttribute("href");

или

    FindElement(By.ClassName("student")).GetAttribute("href")

, чтобы получить "href" из того места, где находится "title". Но у них есть страницы с разным дизайном, и единственное общее между ними - это заголовок. Интересно, есть ли какое-нибудь решение для меня, чтобы найти "href" по "title = ZZZ"? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Попробуйте этот xpath:

/a[@title="ZZZ"]/@href
0 голосов
/ 29 марта 2020

Два примера различны, я бы использовал оператор объединения (|) выражений XPath, который будет работать в обоих случаях. Если у вас есть больше дел, вы можете добавить дополнительный оператор объединения, а затем новый регистр XPath:

//a[@title='ZZZ']/@href | //*[@class='title'][contains(text(),'ZZZ')]/parent::a/@href

Без поиска специфики c text:

//a[@title]/@href | //*[@class='title']/parent::a/@href
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...