web-dev-qa-db-ja.com

Python Selenium:xpathを使用してオブジェクト属性を検索

私はxpathを初めて使用し、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

これを解決する方法はありますか?

編集:xpathは正しいですが、obj属性を「返し」ます。要素ではないため、許可されません。 get_attr_by_xpath()などのメソッドが見つかりません。

19
root

私は最終的にget_attribute("value")を次のように使用しました:

for i in browser.find_elements_by_xpath("//*[@type='submit']"):
    print i.get_attribute("value")
30
root

こんな感じ

browser.find_elements_by_xpath("//*[@type='submit']/@value").text

更新:

あなたが使用する関数では、属性ではなく要素のみを抽出できます。その属性を取得するには、式は次のようになります

browser.find_elements_by_xpath("//*[@type='submit']").get_attribute("value")

参照: http://Selenium-python.readthedocs.org/en/latest/api.html#Selenium.webdriver.remote.webelement.WebElement.find_elements_by_tag_name

2
Jayy

これが2年以上前に投稿されたことは確かに知っていますが、残されたものに少し追加したいと思います。 Seleniumには、タグの間にあるテキストまたはタグ内の実際の属性値を取得するために使用できる組み込みの単語が用意されています。

${XPATH}    xpath=(//td[@title='mytitle']/../td)[2]     

以下に簡単な例を示します。

${THE_NAME}=       Get Text           ${XPATH} 
1
abeltre1