0

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

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

4 回答 4

0

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

//tr/td/span

现在,可以使用 xpath 来选择具有特定文本的span标签,如下所示:

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

/* in your case*/

//tr/td/span[text() = title1]
于 2013-02-13T04:33:31.377 回答
0

获得 title1 后,尝试实现类似下面的逻辑,以查找有多少元素具有相同的文本

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

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

于 2013-02-13T05:25:48.760 回答
0

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

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

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

int count= driver.FindElements(
  By.XPath(
    ".//span[text()='"+titleOneText+"']"
  )).size();
于 2013-02-14T08:37:22.403 回答
0

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

具有相同 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
于 2013-02-20T08:23:40.423 回答