Seleniumから要素の属性を取得するにはどうすればよいですか?


89

私はPythonでSeleniumを使用しています。要素のを取得して.val()<select>それが期待どおりであることを確認したいと思います。

これは私のコードです:

def test_chart_renders_from_url(self):
    url = 'http://localhost:8000/analyse/'
    self.browser.get(url)
    org = driver.find_element_by_id('org')
    # Find the value of org?

これどうやってするの?Seleniumのドキュメントには、要素の選択についてはたくさんあるようですが、属性については何もありません。


2
selenium-python-docs、7.11で get_attribute(name)うまくいくかもしれませんが、実際に使用したことはないと思います。試してみます!
Abd Azrad 2015年

回答:


138

あなたはおそらく探していget_attribute()ます。ここにも例が示さています

def test_chart_renders_from_url(self):
    url = 'http://localhost:8000/analyse/'
    self.browser.get(url)
    org = driver.find_element_by_id('org')
    # Find the value of org?
    val = org.get_attribute("attribute name")

49

Python

element.get_attribute("attribute name")

Java

element.getAttribute("attribute name")

ルビー

element.attribute("attribute name")

C#

element.GetAttribute("attribute name");

6

最近開発されたWebアプリケーションJavaScriptjQueryAngularJSReactJSなどを使用しているため、Seleniumを介して要素の属性を取得するには、WebDriverWaitを誘導して、WebDriverインスタンスを遅れているWebクライアント(つまり、以前のWebブラウザー)と同期させる必要があります。属性のいずれかを取得しようとしています。

いくつかの例:

  • Python:

    • 任意の属性フォームを取得するには目に見える要素(例えば<h1>タグ)をあなたが使用する必要がexpected_conditionsをとしてvisibility_of_element_located(locator)、次のように:

      attribute_value = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID, "org"))).get_attribute("attribute_name")
      
    • 任意の属性フォームを取得するには、インタラクティブ要素(例えば<input>タグ)をあなたが使用する必要がexpected_conditionsをとしてelement_to_be_clickable(locator)、次のように:

      attribute_value = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "org"))).get_attribute("attribute_name")
      

HTML属性

以下は、HTMLでよく使用されるいくつかの属性のリストです。

HTML属性

:各HTML要素のすべての属性の完全なリストは、次のリストに記載されています。HTML属性リファレンス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.