ฉันพยายามทดสอบอินเตอร์เฟส javascript ที่ซับซ้อนด้วย Selenium (ใช้ส่วนต่อประสาน Python และในเบราว์เซอร์หลายตัว) ฉันมีปุ่มหลายรูปแบบ:
<div>My Button</div>
ฉันต้องการค้นหาปุ่มตาม "ปุ่มของฉัน" (หรือไม่ตรงตามตัวพิมพ์ใหญ่ - เล็กและตรงเช่น "ปุ่มของฉัน" หรือ "ปุ่ม")
ฉันพบว่ามันยากอย่างน่าอัศจรรย์เท่าที่ฉันรู้สึกว่าฉันขาดอะไรบางอย่างที่เห็นได้ชัด สิ่งที่ดีที่สุดที่ฉันมีคือ:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
อย่างไรก็ตามแบบตรงตามตัวพิมพ์ใหญ่ - เล็ก สิ่งอื่น ๆ ที่ฉันได้ลองทำก็คือวนซ้ำทั้งหมดในหน้าและตรวจสอบคุณสมบัติ element.text อย่างไรก็ตามทุกครั้งที่คุณได้รับแบบฟอร์ม:
<div class="outer"><div class="inner">My Button</div></div>
div.outer ยังมี "ปุ่มของฉัน" เป็นข้อความ ในการแก้ไขปัญหานั้นฉันได้ลองดูเพื่อดูว่า div.outer เป็นพาเรนต์ของ div.inner แต่ไม่สามารถหาวิธีการทำเช่นนั้นได้ การทดสอบไม่เท่ากับ div.outer) นอกจากนี้การวนองค์ประกอบทั้งหมดในหน้านั้นดูเหมือนจะช้ามากอย่างน้อยก็ใช้ Chrome webdriver
ไอเดีย?
แก้ไข: คำถามนี้คลุมเครือเล็กน้อย ถาม (และตอบ) รุ่นที่เฉพาะเจาะจงมากขึ้นที่นี่: วิธีรับข้อความขององค์ประกอบใน Selenium WebDriver (ผ่าน Python API) โดยไม่รวมข้อความองค์ประกอบลูก