如何通过两个属性找到元素? c#webdriver

时间:2016-02-10 09:12:58

标签: c# css selenium xpath

我需要按类及其包含的文本查找元素。我试过这样但没有任何效果,请帮忙(对我来说最好选择使用css,但xpath也可以):

Driver.FindElement(By.XPath("//td[contains(@class,'TestClass') and .//text()='TestText']"))
Driver.FindElement(By.CssSelector("td.TestClass:contains('TestText')"))

元素:

  <td class="TestClass"> TestText</td>
  <td class="TestClass"> TestText1</td>
  <td class="TestClass"> TestText2</td>...

3 个答案:

答案 0 :(得分:3)

  1. 您可以尝试使用以下XPATH表达式:

    //td[@class='TestClass'][text()='TestText']
    
  2. 使用FindElements代替FindElement。您可以找到所有td元素,然后循环浏览它们以查找所需的文本。

答案 1 :(得分:1)

在xpath下方使用: -

//td[text()=' TestText']

OR

//td[@class='TestClass' and text()=' TestText']

希望它会对你有所帮助:)。

答案 2 :(得分:1)

在C#中使用 CSS Selector 和LINQ的不同方法:

    var elements = WebDriver.FindElements(By.CssSelector("td.TestClass'"]));
    var theElement = elements.FirstOrDefault( e => e.Text.Contains("TestText1"));