Ответ 1
Наконец, я использовал get_attribute("value")
как:
for i in browser.find_elements_by_xpath("//*[@type='submit']"):
print i.get_attribute("value")
Я новичок в xpath, пытаясь получить значение "value" с помощью xpath:
<input type="submit" value=" Search " class="long searchButton" style="width:190px !important;">
в то время как элемент "type="submit"
легко найти:
browser.find_elements_by_xpath("//*[@type='submit']")
Мне не удалось выяснить, как получить нужные значения, так как:
browser.find_elements_by_xpath("//*[@type='submit']/@value")
несколько ожидаемо дает ошибку:
expression "//*[@type=\'submit\']/@value" is: [object Attr]. It should be an element
Есть идеи, как это решить?
EDIT: Xpath правильный, но он "возвращает" атрибут obj и, поскольку он не является элементом, он не разрешен. Я не могу найти такой метод, как get_attr_by_xpath() или что-то подобное.
Наконец, я использовал get_attribute("value")
как:
for i in browser.find_elements_by_xpath("//*[@type='submit']"):
print i.get_attribute("value")
Это будет как
browser.find_elements_by_xpath("//*[@type='submit']/@value").text
Update:
С помощью используемой вами функции мы можем извлечь только элемент, а не его атрибут. Чтобы получить его атрибут, выражение должно быть чем-то вроде этого
browser.find_elements_by_xpath("//*[@type='submit']").get_attribute("value")
Я, конечно, знаю, что это было опубликовано более 2 лет назад, но я хотел бы добавить немного к нему, которое было упущено. selenium предоставляет встроенные слова, которые можно использовать для вытягивания текста, находящегося между тегами или фактическими значениями атрибутов внутри тегов.
${XPATH} xpath=(//td[@title='mytitle']/../td)[2]
Вот краткий пример:
${THE_NAME}= Get Text ${XPATH}