2

我正在使用 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

4 回答 4

1

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

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

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

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

于 2012-04-11T00:05:57.677 回答
0
driver.FindElement(By.XPath(xpath)).GetAttribute("text")
于 2012-04-11T03:50:31.893 回答
0

使用方法getText

driver.findElement(By.xpath("")).getText();
于 2012-04-11T04:16:10.697 回答
0

我的看法:

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

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

或者可能

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

如果您想要获得的所有元素确实有共同点align = 'left',那么可以在您的示例中看到。

于 2012-06-09T00:02:45.710 回答