xPath Text Berisi Selenium Web Driver

Oct 27 2020

Saya mencoba memilih elemen berdasarkan konten teksnya. Saya menggunakan XPath untuk mencapai ini.

Saya hanya bingung karena ini harus berhasil?

WebElement link = obj.driver.findElement(By.xpath("//div[contains(text(), 'Notifications')]")); 

Saya bahkan akan menyalin kode HTML:

<div class="linkWrap noCount">Notifications&nbsp;<span class="count _5wk0 hidden_elem uiSideNavCountText">(<span class="countValue fsm">0</span><span class="maxCountIndicator"></span>)</span></div>

Elemen div memiliki kata "Pemberitahuan" di dalamnya. Jadi mengapa tidak berhasil.

Buka halaman ini di Facebook: https://www.facebook.com/settings

Gunakan ekstensi chrome ini untuk menyorot area mana pun melalui xPath.

Jawaban

DMart Oct 27 2020 at 18:12

Anda memiliki spasi sebelum kata Pemberitahuan:

WebElement link = obj.driver.findElement(By.xpath("//div[contains(text(), 'Notifications')]"));    

Anda juga harus menambahkan elemen tunggu sebelum mencoba menemukan elemen:

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[contains(text(), 'Notifications')]"));

WebElement link = obj.driver.findElement(By.xpath("//div[contains(text(), 'Notifications')]")); 
JackTrowbridge Oct 29 2020 at 20:21

Saya menemukan masalah ini dengan bantuan beberapa orang luar biasa di komunitas ini.

Oke, jadi elemen saya ada di iFrame.

Untuk mengakses elemen, pertama-tama saya harus mengakses iFrame

WebElement iframe = obj.driver.findElement(By.xpath("//iframe[@tabindex='-1']"));
    
obj.driver.switchTo().frame(iframe);