当id不存在时查找标签文本

时间:2012-04-10 19:32:33

标签: selenium selenium-webdriver

我正在使用selenium web驱动程序在以下html标记中找到标签文本:

<tr id="row" style="display: inline; padding-left: 10px; padding-right: 10px;">
<td>
<table width="776" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td align="right">&nbsp;</td>
<td>&nbsp;</td>
<td align="right">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="92" height="25" align="left">**Label Text&nbsp**;</td>
<td width="227">
<td width="170" align="left">">**Label Text 2&nbsp**;</td>
</td>
</tr>

我使用了driver.findElement(By.id(“row”))。getText(),但它没有检索到任何东西。 如何让它打印标签文本。感谢。

4 个答案:

答案 0 :(得分:0)

要访问“标签文本”单元格,您需要搜索单元格本身,包含它们的行。如果你使用的是WatiN,那就是这种情况。 使用“标签文本”查找任何元素的另一种方法是:

ReadOnlyCollection<IWebElement> temp = driver.FindElements(By.XPath("//td[@text='Label Text'])); 

如果示例中的“标签文本”是不同文本的占位符,这将变得棘手,您可以尝试抓取包含单元格的tableRow中的每个单元格。但是,只有第一行似乎具有id。希望这有帮助!

编辑: 或者,一个(非常)hacky解决方案,如果您确切地知道您想要哪个单元格并且它具有独特的大小(如您的示例),您可以尝试查找所有单元格,然后手动搜索其宽度。例如:     foreach(tempCells中的IWebElement temp)     {         if(temp.Size.Width == 170)             temp.Text;     }

答案 1 :(得分:0)

driver.FindElement(By.XPath(xpath)).GetAttribute("text")

答案 2 :(得分:0)

使用方法getText

driver.findElement(By.xpath("")).getText();

答案 3 :(得分:0)

我的看法:

List<WebElement> list;
list = driver.findElements(By.xpath("id('row')//td[string-length(text()) > 1]"));

这应该得到一个List<td>元素,其文本节点长于1个字符(如果&nbsp;实际上计为5 =,则更改为5))。

或者

list = driver.findElements(By.xpath("id('row')//td[@align='left']"));

如果您想要获得的所有元素与您的示例中可以看到的align = 'left'部分有共同点。