Selenium WebDriver获取Div类型表的子元素

时间:2014-01-06 14:12:30

标签: java selenium selenium-webdriver

我有一个div元素,有几个表作为子元素。问题是我需要滚动以获取某些表,所以如果我使用webElement.getElements(By.xpath("//table[@id='data']"))我只获得前两个元素(所有表元素具有相同的ID)。

我需要一种方法来获取它们或以某种方式滚动div并继续阅读元素。 我的selenium版本是2.37.1我在Internet Explorer 8中使用它。我无法提供代码。

<div id="statistics" style="overflow-y: auto; overflow-x:hidden;">

<table id="header" width="50%" cellspacing="0" cellpadding="0" style="margin:0;">    </table>
<table id="data" width="50%" cellspacing="1" cellpadding="0" style="font-size: 12px;border:1px solid #5c9ccc;"></table>
<div id="separator"></div>
<table id="header" width="50%" cellspacing="0" cellpadding="0" style="margin:0;"></table>
<table id="data" width="50%" cellspacing="1" cellpadding="0" style="font-size: 12px;border:1px solid #5c9ccc;"></table>
<div id="separator"></div>
<table id="header" width="50%" cellspacing="0" cellpadding="0" style="margin:0;"></table>
<table id="data" width="50%" cellspacing="1" cellpadding="0" style="font-size: 12px;border:1px solid #5c9ccc;"></table>
<div id="separator"></div>

好的,所以我设法获得发布部分HTML的权限。那个有很多桌子作为孩子的div。在这些孩子中,我需要阅读id =“data”的所有表格

2 个答案:

答案 0 :(得分:0)

  

我只获得前两个元素(所有表元素都具有相同的id)。

在同一页面上拥有多个具有相同ID的元素是违法的,这就是所用的类。 Id的意思是独一无二的。因此,编辑您的ID以使其唯一,或者将表更改为例如class="data"

  

我很抱歉无法提供代码:(

您可以使用不同的表达式,或者只是找到div类型表下的所有子项,但我很抱歉由于缺少代码而无法提供更好的答案。

答案 1 :(得分:0)

经过大量的调试和网络搜索,我发现解决方案非常简单:我必须检索父级并在其上调用click()。之后,调用findElements()返回我需要的所有元素。
如果没有调用click(),WebDriver会模拟真实用户,这意味着只能获得两个结果,即通常在页面中不可滚动的结果。