Ada beberapa opsi di sana. Kode sampel ada di Java, tetapi port ke bahasa lain harus langsung.
JavaScript:
WebElement myElement = driver.findElement(By.id("myDiv"));
WebElement parent = (WebElement) ((JavascriptExecutor) driver).executeScript(
"return arguments[0].parentNode;", myElement);
XPath:
WebElement myElement = driver.findElement(By.id("myDiv"));
WebElement parent = myElement.findElement(By.xpath("./.."));
Mendapatkan pengemudi dari WebElement
Catatan: Seperti yang Anda lihat, untuk versi JavaScript Anda memerlukan driver
. Jika Anda tidak memiliki akses langsung ke sana, Anda dapat mengambilnya dari WebElement
menggunakan:
WebDriver driver = ((WrapsDriver) myElement).getWrappedDriver();
By.xpath(“./..”)
untuk berjalan di pohon DOM dengan benar saat menggunakanelement.findElement
. Pengantar "./" diperlukan untuk mengatur simpul konteks.Sedikit lebih banyak tentang
XPath axes
Katakanlah kita memiliki
HTML
struktur di bawah ini ://span/parent::*
- mengembalikan elemen apa pun yang merupakan induk langsung.Dalam hal ini keluarannya adalah
<div class="parent">
//span/parent::div[@class="parent"]
- mengembalikan elemen induk hanya dari tipe node yang tepat dan hanya jika predikat yang ditentukan adalah True.Keluaran:
<div class="parent">
//span/ancestor::*
- mengembalikan semua leluhur (termasuk orang tua).Output:
<div class="parent">
,<nav class="second_level_ancestor">
,<div class="third_level_ancestor">
...//span/ancestor-or-self::*
- mengembalikan semua leluhur dan elemen saat ini itu sendiri.Output:
<span>Child</span>
,<div class="parent">
,<nav class="second_level_ancestor">
,<div class="third_level_ancestor">
...//span/ancestor::div[2]
- mengembalikan leluhur kedua (mulai dari induk) dari tipediv
.Keluaran:
<div class="third_level_ancestor">
sumber
Anggap DOM Anda sebagai
Sekarang Anda perlu memilih tag induk 'a' berdasarkan
<span>
teks, lalu gunakanPenjelasan: Pilih node berdasarkan nilai node turunannya
sumber
div
yang lagi bersarang dengan beberapa div maka alih-alih.//span
diBy.xpath("//div[.//span[text()='Close']]")
kita bisa menggunakan*//span
, itu akan mencari sebagian besar elemen div induk dari rentang yang diberikan. Sekarang akan terlihat seperti inidriver.findElement(By.xpath("//div[*//span[text()='Close']]"));
Lihatlah sumbu XPath yang mungkin , yang mungkin Anda cari
parent
. Bergantung pada bagaimana Anda menemukan elemen pertama, Anda bisa menyesuaikan xpath untuk itu.Atau Anda dapat mencoba sintaks titik ganda ,
..
yang memilih induk dari node saat ini.sumber
Ini mungkin berguna untuk orang lain: Menggunakan html contoh ini
Jika misalnya, saya ingin memilih elemen di bagian yang sama (misalnya div) sebagai label, Anda dapat menggunakan ini
Artinya, cari label (bisa apa saja
a
,h2
) bernamalabelName
. Arahkan ke induk label itu (yaitudiv class="ParentDiv"
). Cari di dalam turunan dari induk tersebut untuk menemukan elemen anak dengan nilaielementToSelect
. Dengan ini, itu tidak akan memilih yang keduaelementToSelect
denganDontSelect
div sebagai induk.Triknya adalah Anda dapat mengurangi area pencarian untuk elemen dengan menavigasi ke induk terlebih dahulu dan kemudian mencari turunan dari induk tersebut untuk elemen yang Anda butuhkan. Sintaks lain seperti
following-sibling::h2
juga dapat digunakan dalam beberapa kasus. Ini berarti elemen saudara berikuth2
. Ini akan bekerja untuk elemen pada level yang sama, memiliki induk yang sama.sumber
Anda bisa melakukan ini dengan menggunakan / parent :: node () di xpath. Cukup tambahkan / parent :: node () ke elemen anak xpath.
Misalnya: Misalkan xpath dari elemen anak adalah childElementXpath .
Kemudian xpath dari leluhur terdekatnya akan menjadi childElementXpath / parent :: node () .
Xpath leluhur berikutnya akan menjadi childElementXpath / parent :: node () / parent :: node ()
dan seterusnya..
Selain itu, Anda bisa menavigasi ke leluhur elemen menggunakan
'childElementXpath/ancestor::*[@attr="attr_value"]'
. Ini akan berguna ketika Anda memiliki elemen turunan yang diketahui unik tetapi memiliki elemen induk yang tidak dapat diidentifikasi secara unik.sumber
Kita dapat memilih tag induk dengan bantuan Selenium sebagai berikut:
ini akan membantu Anda menemukan kakek nenek dari Elemen yang diketahui. Hapus saja satu (/ ..) untuk menemukan Elemen Induk langsung.
Suka:
Ada beberapa cara lain untuk menerapkan ini, tetapi ini berfungsi dengan baik untuk saya.
sumber