我正在使用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"> </td>
<td> </td>
<td align="right"> </td>
<td> </td>
</tr>
<tr>
<td width="92" height="25" align="left">**Label Text **;</td>
<td width="227">
<td width="170" align="left">">**Label Text 2 **;</td>
</td>
</tr>
我使用了driver.findElement(By.id(“row”))。getText(),但它没有检索到任何东西。 如何让它打印标签文本。感谢。
答案 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个字符(如果
实际上计为5 =,则更改为5))。
或者
list = driver.findElements(By.xpath("id('row')//td[@align='left']"));
如果您想要获得的所有元素与您的示例中可以看到的align = 'left'
部分有共同点。