Saya sedang menulis tes untuk situs saya menggunakan Selenium IDE dan saya mengalami masalah dengan selenium mengklik tombol menggunakan preceding-sibling
<td>
<div class="btn-group">
<button class="btn btn btn-danger block" title="Warning, Delete" name="delete" type="button">
<button class="btn btn btn-default block" title="View History" name="history" type="button">
<button class="btn btn btn-default block" title="View Settings" name="settings" type="button">
<button class="btn btn btn-default block" name="device" type="button">
<span class="glyphicon glyphicon-pencil"/>
Arcade Reader
</button>
</div>
</td>
Jalur saya
xpath=//button[contains(.,'Arcade Reader')]/../preceding-sibling::button[@name='settings']
Saya juga suka membangun lokator dari atas ke bawah seperti:
//div[contains(@class,'btn-group')][./button[contains(.,'Arcade Reader')]]/button[@name='settings']
Ini cukup sederhana, karena kita hanya mencari btn-group
dengan button[contains(.,'Arcade Reader')]
dan mendapatkan button[@name=39'settings']
Itu hanya pilihan lain untuk membangun pencari xPath
Apa keuntungan dari mencari elemen wrapper: Anda dapat mengembalikannya dengan metode (contoh di java) dan hanya membangun konstruksi selenium seperti:
getGroupByName("Arcade Reader").find("button[name='settings']");
getGroupByName("Arcade Reader").find("button[name='delete']");
atau bahkan lebih menyederhanakan
getGroupButton("Arcade Reader", "delete").click();