Клиент Selenium-rc Python: не удается выполнить итерацию через xpath?

#python #selenium-rc

#python #selenium-rc

Вопрос:

Я новичок в Selenium и внедряю selenium-rc с клиентской библиотекой Python. Я попытался выполнить обход div моей страницы, используя элементы xpath, используя команду «sel.get_xpath_count (xpath)».

Он выдает число 20, но когда я выполняю итерацию по каждому div, используя оператор for и команду «sel.get_text(xpath=’%s [%d]’%(xpath, i))», но он находит только первый элемент и выдает ошибку для оставшихся 19, в которой говорится, что divs не найдены.

Ответ №1:

Ваше второе выражение XPath неверно. Программисты, обученные языкам в стиле C, часто допускают эту ошибку, потому что они видят [...] и думают «индексировать в массив», но это не то, что делают скобки в XPath.

Если вы используете sel.get_xpath_count(something) , то вам нужно использовать sel.get_text("xpath=(something)[item_number]") . Обратите внимание на использование круглых скобок вокруг исходного выражения XPath во втором использовании.

Причина этого заключается в том, что something[item_count] это сокращение для something AND position() = item_count — таким образом, вы заканчиваете добавлением другого предиката к выражению «что-то» вместо выбора одного из узлов, выбранных выражением. (something)[item_count] работает, потому что значением (something) является список узлов, а добавление a position() = item_count выбирает узел из списка с указанной позицией. Это больше похоже на массив в стиле C.