Например мне нужно получить две строки:
<input id="FB_childRec1_0" type="hidden" value="child12_0,child22_0,child13_0,child23_0,child14_0,child24_0" size="1"/>и
<input id="FB_childRec4_0" type="hidden" value="child15_0,child25_0,child16_0,child26_0,child17_0,child27_0,child18_0,child28_0,child19_0" size="1"/>
из этого кода:
<tbody> <input id="cidChild1_0" type="hidden" value="T3$PATENT$US7381548B220080603"/> <input id="cidChild1_0" type="hidden" value="T3$PATENT$US7381548B220080603"/> <tr id="FORWARD_1US7381548B220080603_0" class="alternate" style="" name="childTR"> <td class="tborder leftAlignment" rowspan="1" style="width:1%"> <td class="tborder leftAlignment vTop" rowspan="1" style="width:1%"> <input id="FB_childRec1_0" type="hidden" value="child12_0,child22_0,child13_0,child23_0,child14_0,child24_0" size="1"/> <td class="tborder leftAlignment vTop" rowspan="1" style="width:1%"> <td class="frmData tborder vTop" align="left" rowspan="1" colspan="5">Forward Citation - (Displaying 3 forward citations)</td> </tr> <input id="cidChild4_0" type="hidden" value="T3$PATENT$US7381548B220080603"/> <tr id="BACKWARD_4US7381548B220080603_0" class="alternate" style="" name="childTR"> <td class="tborder leftAlignment" rowspan="1" style="width:1%"> <td class="tborder leftAlignment vTop" rowspan="1" style="width:1%"> <input id="FB_childRec4_0" type="hidden" value="child15_0,child25_0,child16_0,child26_0,child17_0,child27_0,child18_0,child28_0,child19_0" size="1"/> <td class="tborder leftAlignment vTop" rowspan="1" style="width:1%"> <td class="frmData tborder vTop" align="left" rowspan="1" colspan="5">Backward Citation - (Displaying 14 backward citations)</td> </tr> </tbody>
Я использую такой XPath запрос:
//tbody/tr[@id[contains(.,'US7381548B2')]]/inputВ коде это выглядит так:
driver.FindElements(By.XPath("//tbody/tr[@id[contains(.,'" + queryArray[i] + "')]]/input"));
В FF все работает отлично и я получаю 2 записи. Но в IE метод FindElements() не возвращает вообще ничего. Я пробовал получить объекты под IE8 и IE9, но безрезультатно. Обновил Selenium WB до версии 2.0.0 - это тоде не помогло. Тогда я подумал,что, возможно, приложение выдает различные исходный код страницы для FF и IE. Я открыл страницу в IE, сохранил ее и затем открыл в FF. Firebug без проблем нашел 2 элемента, следовательно код одинаков. Все это наводит на мысль, что это какой-то баг с селениумом. Я нашел множество подобных тем на форумах - XPath запросы работают в Firefox, но не рабтают в IE, но нигде нет причин подобного поведения.
Мы планировали перевести наш отдел с QTP на Selenium WebDriver, однако такого рода ошибки на пустом месте сильно озадачивают.
Возможно кто-то уже встречался с подобными проблемами? Из-за чего это происходит? Как это решается?