Mengautomasikan Elemen Shadow DOM dalam Selenium
Automasi halaman web menggunakan Selenium sering menghadapi cabaran apabila berinteraksi dengan elemen DOM bayangan, disebabkan pengkapsulan dari DOM utama. Artikel ini meneroka penyelesaian untuk mengatasi halangan ini menggunakan kaedah WebElement.getShadowRoot() yang baru diperkenalkan dalam Selenium 4.
Pendekatan dan Had Sebelumnya
Sebelum Selenium 4, pembangun bergantung pada kaedah CSS atau JS Executor yang mendalam untuk mengakses elemen bayangan. Walau bagaimanapun, CSS mendalam tidak serasi dengan versi terkini penyemak imbas Chrome dan JS Executor menjadi membosankan dan kompleks untuk diselenggara untuk kegunaan meluas.
Selenium 4 Solution: getShadowRoot()
Dengan Selenium 4, kaedah WebElement.getShadowRoot() menyediakan pusat akses terus kepada bayang-bayang DOM sesuatu elemen. Ini menghapuskan keperluan untuk penyelesaian yang kompleks dan menawarkan pendekatan interaksi yang lebih padu dan cekap.
Contoh Penggunaan
Untuk mendapatkan semula elemen yang bersarang dalam DOM bayangan, gunakan sintaks berikut:
driver.findElement(By.id("parentId")).getShadowRoot().findElement(By.cssSelector("label")).findElement(By.tagName("input"))
Dalam contoh ini, "parentId" mewakili ID elemen induk mengandungi akar bayang, dan "label" dan "input" masing-masing mewakili pemilih CSS dan nama teg, untuk elemen bersarang yang dikehendaki.
Penghadan getShadowRoot()
Adalah penting untuk ambil perhatian bahawa walaupun WebElement.getShadowRoot() menyediakan akses kepada DOM bayangan, ia mempunyai beberapa batasan. Sebagai contoh, hanya strategi pencari tertentu sahaja disokong. Contohnya, dalam Chrome, By.cssSelector() dan By.className() boleh digunakan dalam shadow DOM, tetapi By.id() dan By.tagName() akan menghasilkan InvalidArgumentException.
Atas ialah kandungan terperinci Bagaimanakah Kaedah `getShadowRoot()` Selenium 4 Memudahkan Automasi Elemen Shadow DOM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!