#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.