我有两个测试用例,我想在其中选择html,并且需要获取所有td' s的值
1.需要选择网页中显示的第二个html并迭代td'并获取值
2.需要选择网页中显示的第3个html并迭代td' s并获取值。
以下是html
<html> - 1st html in the page
<body>
<table>
<tbody>
<tr>
<td>..</td>
....
</tr>
.....
....
</tbody>
</table>
</body>
</html>
<iframe> - Parent
<iframe tabindex="-1" frameborder="no" width="100%" src="about:blank" class="active">
<html> - 2nd html in the page
<body>
<table>
<tbody>
<tr>
<td>..</td>
<td>..</td>
<td>..</td>
</tr>
<tr>
<td>..</td>
<td>..</td>
<td>..</td>
</tr>
<tr>
<td>..</td>
<td>..</td>
<td>..</td>
</tr>
....
....
.....
<tbody>
</table>
</body>
</html>
</iframe>
<iframe tabindex="-1" frameborder="no" width="100%" src="about:blank" class="active">
<html> - 3rd html in the page
<body>
<table>
<tbody>
<tr>
<td>..</td>
<td>..</td>
<td>..</td>
</tr>
<tr>
<td>..</td>
<td>..</td>
<td>..</td>
</tr>
<tbody>
</table>
</body>
</html>
</iframe>
</iframe>
仅供参考,我在找到元素
之前切换到IFramedriver.SwitchTo().Frame(); - outerframe
driver.SwitchTo().Frame(); - InnerFrame
我尝试了下面的一个来找到元素,但它选择了网页上的第一个html元素。
List<IWebElement> elements = driver.FindElement(By.XPath("/html/body/table/tbody")).FindElements(By.TagName("tr")).ToList();
有人可以帮我解决这个问题吗? 感谢
答案 0 :(得分:1)
试试这个:
var frames = driver.FindElements(By.TagName("iframe")).ToList()
driver.switchTo().frames[1];
tds = WebDriver.FindElements.(By.Tagname("td");;
var td = tds.Where(ele=>ele.Text=="Something").ToList();
答案 1 :(得分:0)
您应该使用以下代码:
List<WebElement> elements = driver.findElements(By.xpath(""));
for(WebElement el: elements){
String value = el.findElement(By.tagName(td)).getText();
System.out.println(value);
}
在迭代帧td时,您应首先选择帧,然后应用与上面代码相同的