Saya mencoba menguji antarmuka javascript yang rumit dengan Selenium (menggunakan antarmuka Python, dan melintasi beberapa browser). Saya memiliki sejumlah tombol dalam bentuk:
<div>My Button</div>
Saya ingin dapat mencari tombol berdasarkan "Tombol Saya" (atau pencocokan parsial yang tidak case-sensitif seperti "tombol saya" atau "tombol")
Saya menemukan ini sangat sulit, sampai-sampai saya merasa kehilangan sesuatu yang jelas. Hal terbaik yang saya miliki sejauh ini adalah:
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
Ini peka huruf besar-kecil. Hal lain yang saya coba adalah mengulangi semua div di halaman, dan memeriksa properti element.text. Namun, setiap kali Anda mendapatkan situasi berupa:
<div class="outer"><div class="inner">My Button</div></div>
div.outer juga memiliki "My Button" sebagai teks. Untuk memperbaiki ITU, saya sudah mencoba melihat apakah div.outer adalah induk dari div.inner, tetapi tidak dapat menemukan cara melakukannya (element.get_element_by_xpath ('..') mengembalikan orangtua elemen, tetapi tes tidak sama dengan div.outer). Selain itu, melakukan iterasi melalui semua elemen pada halaman tampaknya sangat lambat, setidaknya menggunakan webdriver Chrome.
Ide ide?
Sunting: Pertanyaan ini sedikit kabur. Ditanyakan (dan dijawab) versi yang lebih spesifik di sini: Cara mendapatkan teks elemen di Selenium WebDriver (melalui api Python) tanpa menyertakan teks elemen anak?