วิธีการรับคุณสมบัติของธาตุจากซีลีเนียม?


89

ฉันกำลังทำงานกับซีลีเนียมใน Python ฉันต้องการที่จะได้รับ.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?

ฉันจะทำเช่นนี้ได้อย่างไร? เอกสารซีลีเนียมดูเหมือนจะมีมากมายเกี่ยวกับการเลือกองค์ประกอบ แต่ไม่มีอะไรเกี่ยวกับคุณลักษณะ


2
selenium-python-docs, 7.11 get_attribute(name)อาจทำงานได้แม้ว่าฉันจะไม่คิดว่าฉันใช้มันจริงๆ ให้มันยิง!
Abd Azrad

คำตอบ:


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")


6

เนื่องจากWeb Applications ที่พัฒนาล่าสุดใช้JavaScript , jQuery , AngularJS , ReactJS และอื่น ๆ จึงมีความเป็นไปได้ที่จะดึงแอตทริบิวต์ขององค์ประกอบผ่านSeleniumคุณต้องทำให้WebDriverWaitซิงโครไนซ์อินสแตนซ์WebDriverกับWeb Client ที่ล้าหลังเช่นเว็บเบราว์เซอร์ก่อน พยายามดึงข้อมูลแอตทริบิวต์ใด ๆ

ตัวอย่างบางส่วน:

  • 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 Attribute Reference

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.