имя класса, а затем имя тега содержит текст div guish - PullRequest
0 голосов
/ 18 февраля 2020

У меня активно имя класса, а затем есть уникальный текст, называемый активным текстом в span (который является вложенным). Имя класса active является уникальным среди других имен классов, тогда как вложенный текст уникален. Как бы я нажал на это. Я использовал следующие методы.

  FindElement(By.XPath("//li[@class='active']//*[contains(.,'active text')]"));

также я пытался

  findelement(BY.xpath(//li[@class='active']//div//div//div//span[contains(.,'active text')]"))

также пытался это

  FindElement(By.XPath("//li[contains(@class,'active')] and //span[contains(.,'active text')]")).Text;

Каждый раз, когда я не получаю такой элемент найден html код

<li class="active">
 <div class="a">
  <div class="b">
   <div class="c">
    <h1></h1>
     <h3 class="d"> some text</h3>
      <div class="e">
       <span class="f">
         Active Text</span>
</div></div></div></div>
</li>

Ответы [ 3 ]

0 голосов
/ 19 февраля 2020
FindElement(By.XPath("//li[@class='active']//span[contains(text(),'Active Text')]"));

ИЛИ

FindElement(By.XPath("//li[@class='active']//span[@class='f' and contains(text(),'Active Text')]"));

Пожалуйста, попробуйте вышеуказанный код. оба будут работать. также, дайте мне знать, если требуется уточнение

0 голосов
/ 19 февраля 2020

Так что у меня сработало,

FindElement (By.CssSelector ("li.active")). FindElement (By.XPath ("// span [содержит (., 'Активный текст' ') )] "));

0 голосов
/ 18 февраля 2020

Вы можете использовать любую из следующих стратегий локатора :

  • CssSelector:

    FindElement(By.CssSelector("li.active span.f"));
    
  • XPath 1:

    FindElement(By.XPath("//li[@class='active']//span[normalize-space()='Active Text']"));
    
  • XPath 2:

    FindElement(By.XPath("//li[@class='active']//span[@class='f' and normalize-space()='Active Text']"));
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...