我已经知道表格中元素的文字:
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">
Leader 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>
答案 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