Jak zdobyć atrybut pierwiastka z selenu?

86

Pracuję z Selenium w Pythonie. Chciałbym uzyskać .val()z <select>elementu i sprawdzić, czy to jest to, czego oczekują.

To jest mój kod:

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?

Jak mogę to zrobić? Wydaje się, że dokumentacja Selenium zawiera wiele informacji na temat wybierania elementów, ale nic nie dotyczy atrybutów.

Richard
źródło
2
selenium-python-docs, 7.11 get_attribute(name) może załatwić sprawę, chociaż nie sądzę, żebym go faktycznie używał. Spróbuj!
Abd Azrad

Odpowiedzi:

132

Prawdopodobnie szukasz get_attribute(). Tutaj również pokazano przykład

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")
Saifur
źródło
49

Pyton

element.get_attribute("attribute name")

Jawa

element.getAttribute("attribute name")

Rubin

element.attribute("attribute name")

DO#

element.GetAttribute("attribute name");
Shubham Jain
źródło
7

Ponieważ ostatnio opracowane aplikacje internetowe używają JavaScript , jQuery , AngularJS , ReactJS itp., Istnieje możliwość, że aby pobrać atrybut elementu za pomocą Selenium , musisz wywołać WebDriverWait, aby zsynchronizować instancję WebDriver z opóźnionym klientem internetowym, tj. Przeglądarką internetową przed próba pobrania dowolnego z atrybutów.

Kilka przykładów:

  • Pyton:

    • Aby odzyskać jakiejkolwiek formie przyporządkowują widocznego elementu (np <h1>tag) trzeba użyć expected_conditions jak visibility_of_element_located(locator)w następujący sposób:

      attribute_value = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID, "org"))).get_attribute("attribute_name")
      
    • Aby odzyskać jakiejkolwiek formie atrybutu jest interaktywny elementu (np <input>tag) trzeba użyć expected_conditions jak element_to_be_clickable(locator)w następujący sposób:

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

Atrybuty HTML

Poniżej znajduje się lista niektórych atrybutów często używanych w HTML

Atrybuty HTML

Uwaga : Pełna lista wszystkich atrybutów każdego elementu HTML znajduje się w: HTML Attribute Reference

DebanjanB
źródło