Misalkan saya memiliki ini (disederhanakan):
<form id="myform">
<!-- some input fields -->
<input type="submit" value="proceed"/>
</form>
Kemudian saya dapat memilih tombol kirim dengan XPath //form[@id='myform']/input[@type='submit']
. Bagus.
Namun, templat saya mungkin berubah dan saya ingin fleksibel di kedalaman tempat tombol kirim berada. Bisa diletakkan di tabel, seperti ini:
<form id="myform">
<!-- some input fields -->
<table><tr><td>
<input type="submit" value="proceed"/>
</td></tr></table>
</form>
Saya tahu saya dapat memilih elemen yang merupakan cucu, tetapi saya tidak dapat memilih cucu-cucu -...- childeren sedalam apa pun. Misalnya:
//form[@id='myform']/*/input[@type='submit']
hanya memilih cucu, tidak ada kedalaman lebih lanjut.//form[@id='myform']/*/*/input[@type='submit']
hanya memilih cucu-cucu, tidak lebih atau kurang kedalaman.//form[@id='myform']/**/input[@type='submit']
tidak valid.
Jadi, bagaimana cara memilih tombol kirim ini dengan andal tanpa menggunakan ID elemen?
//form//input
mengembalikan null di C # sementara Chrome dapat menemukan 35 input menggunakan xpath yang samaJika Anda menggunakan XmlDocument dan XmlNode.
Mengatakan:
Menggunakan:
Itu tergantung pada alat yang Anda gunakan. Tapi .// akan memilih anak apa pun, kedalaman apa pun dari node referensi.
sumber
sumber
Anda juga dapat melakukannya dengan pemilih css:
spasi antara elemen dalam pemilih css berarti mencari input [type = 'submit'] elemen tersebut pada kedalaman berapa pun dari induk membentuk # elemen myform
sumber