我有2個測試用例,其中我想選擇html並需要獲取所有td的值
1.需要選擇網頁中顯示的第二個html並遍歷td並獲得值
2.需要選擇網頁中顯示的第三個html並遍歷td並獲取該值。
下面是HTML
在Selenium Webdriver中通過html td的迭代
<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>
僅供參考,我發現了元素
driver.SwitchTo().Frame(); - outerframe
driver.SwitchTo().Frame(); - InnerFrame
我嘗試了下面一個找到元素之前切換到IFRAME,但它是選擇第一html元素在網頁上。
List<IWebElement> elements = driver.FindElement(By.XPath("/html/body/table/tbody")).FindElements(By.TagName("tr")).ToList();
有人能幫我解決嗎?
感謝
是你在正確的軌道上,你必須switchToFrame去到其他內容。我永遠不會使用XPATH。我使用例如currentElement.FindElements(By.Tagname(「td」));如果currentElement是Table元素或TableBody元素,這將向我顯示錶中的所有TD。 –