2014-01-06 2 views
0

У меня есть элемент div, который имеет несколько таблиц в качестве дочерних элементов. Проблема в том, что мне нужно прокрутить, чтобы добраться до некоторых таблиц, поэтому, если я использую webElement.getElements(By.xpath("//table[@id='data']")), я получаю только первые два элемента (все элементы таблицы имеют одинаковый идентификатор).Selenium WebDriver получает дочерние элементы таблицы типов Div

Мне нужен способ получить их все или как-то прокрутить 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. Thats div, который имеет много таблиц в качестве детей. Из этих детей мне нужно прочитать всю таблицу с id = "data"

+2

Это звучит недействительным HTML, который является фундаментальной проблемой для начала. [Спецификация HTML4] (http://www.w3.org/TR/html4/struct/global.html#adef-id) ** и ** [спецификация HTML5] (http://www.w3.org/ TR/html5/elements.html # the-id-attribute) ** четко ** примечание ID * обязательно должно быть уникальным. Запустите HTML через валидатор, и он будет терпеть неудачу. С точки зрения конкретной проблемы, которую вы описали, три вещи: другие в IFrames? Являются ли другие видимыми и присутствуют в зависимости от каких-либо действий, предпринятых на веб-странице? Наконец, проблема исчезает в других браузерах? – Arran

+0

Элемент div, который имеет таблицы внутри, имеет довольно много таблиц. Если я хочу увидеть их всех, мне нужно прокрутить вниз. Я думаю, что мое лучшее решение - это способ прокрутить вниз в div. Я вижу только два элемента, потому что только они помещаются на странице – diazazar

+0

Забыв упомянуть, вы правы: веб-страница очень плохо сделана, но она не сделана мной, поэтому я не могу ее изменить. «Другие видны и присутствуют в зависимости от каких-либо действий, предпринятых на веб-странице?» Это помогло мне найти решение. Спасибо – diazazar

ответ

0

Я получаю только первые два элемента (все элементы таблицы имеют одинаковый идентификатор).

Нельзя иметь несколько элементов с одинаковым идентификатором на одной странице, для чего предназначены классы. Идентификаторы должны быть уникальными. Итак, отредактируйте свой идентификатор, чтобы сделать их уникальными или измените таблицы на наличие class="data", например.

Я сожалею, что не могу предоставить код :(

Вы могли бы использовать другое выражение или просто найти все детей в DIV, которые табличного типа, но я извиняюсь за невозможность предоставить лучший ответ из-за недостатка кода.

+0

Я обновил часть кода html. – diazazar

0

После многопользовательской отладки и поиска в Интернете, я нахожу решение довольно простым: мне нужно было получить родителя и вызвать click() на нем. после этого вызов findElements() возвратил все необходимые мне элементы.
если щелкнуть () не вызывается, WebDriver имитирует реального пользователя, и это будет означать получение только двух результатов, которые будут нормально видны на странице без прокрутки.

Смежные вопросы