类名,然后标签名包含区别文本

问题描述 投票:0回答:3

我的类名处于活动状态,然后在span(嵌套)中有一个称为活动文本的唯一文本。活动的类名在其他类名中是唯一的,然后嵌套的文本是唯一的。我将如何单击。我使用了以下方法。

  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">
      <div class="e">
       <span class="f">
         Active Text</span>
</div></div></div></div>
</li>
c# selenium testing selenium-webdriver automation
3个回答
0
投票

您可以使用以下Locator Strategies之一:

  • 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']"));
    

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

OR

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

请尝试上面的代码。两者都会起作用。另外,请告知是否需要澄清]


-1
投票

[将您的xpath稍加修改以明确声明span标签。字母大小写也很重要。

FindElement(By.XPath("//li[@class='active']//span[contains(., 'Active Text')]")).Text;
© www.soinside.com 2019 - 2024. All rights reserved.