如何使用XPath查找是否存在与selenium具有相同名称的第二个元素?

时间:2013-02-13 00:02:08

标签: xpath selenium webdriver selenium-webdriver

我已经知道表格中元素的文字:

string title1 = Driver.FindElement(
  By.XPath(
    ".//[@id='ctl00_ContentPlaceHolder1_BreakdownGridView_ctl02_TitleLabel']"
  )).Text;

如何验证表中是否有与title1具有相同文本的第二个元素?

这是我的表结构:

<tr class="alt" style="background-color:White;height:110px;">
  <td>
     <span id="ctl00_ContentPlaceHolder1_BreakdownGridView_ctl03_WindowStartLabel" tabindex="1">
        01/13/2013
     </span>
  </td>
  <td>
     <span id="ctl00_ContentPlaceHolder1_BreakdownGridView_ctl03_ShowLabel" tabindex="1">
       Lea‌​der of the Pack
     </span>
  </td>
  <td>
    <span id="ctl00_ContentPlaceHolder1_BreakdownGridView_ctl03_TitleLabel">
       Love at First Bite
    </span>
  </td>
  <td>
     <span id="ctl00_ContentPlaceHolder1_BreakdownGridView_ctl03_PremiereLabel">
        01/12/2013 22:00
     </span>
  </td>
  ...
</tr> 

4 个答案:

答案 0 :(得分:0)

在表结构中,执行如下的xpath查询将选择所有 span 标记。

//tr/td/span

现在,xpath可用于选择具有特定文本的 span 标记,如下所示:

//tr/td/span[text() = "Text you're matching against"]

/* in your case*/

//tr/td/span[text() = title1]

答案 1 :(得分:0)

获得title1之后,尝试使用类似下面的逻辑来查找具有相同文本的元素数量

int count=driver.findElements(By.xpath("//table[@id='urTable']//*[text()='"+title1+"']")).size();

根据计数,很容易找到有相同文本的元素数量。

答案 2 :(得分:0)

这是为了得到跨度包含文本....(部分匹配)

int count= driver.FindElements(
  By.XPath(
    ".//span[contains(text(),'"+titleOneText+"')]"
  )).size();

这是为了让跨度文本相同....(完全匹配)

int count= driver.FindElements(
  By.XPath(
    ".//span[text()='"+titleOneText+"']"
  )).size();

答案 3 :(得分:0)

根据您的问题,如果相同的xpath值有2个元素。只需看到特定元素的静态值并将其作为xpath。它肯定会工作的。例如

save&amp;取消具有相同xpath值的按钮

driver.find_element_by_xpath("//*[@id='id_sav']")-save
driver.find_element_by_xpath("//*[@id='id_sav']")-cancel

这里我们可以使用静态元素值

driver.find_element_by_xpath("//a[text()='save']")-save
driver.find_element_by_xpath("//a[text()='cancel']")-cancel