xPath Text Berisi Selenium Web Driver
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 <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
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')]"));
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);