xPath Metin Selenium Web Sürücüsü İçerir
Oct 27 2020
Metin içeriğine göre bir öğe seçmeye çalışıyorum. Bunu başarmak için XPath kullanıyorum.
Bunun çalışması gerektiği için kafam karıştı mı?
WebElement link = obj.driver.findElement(By.xpath("//div[contains(text(), 'Notifications')]"));
HTML kodunu bile kopyalayacağım:
<div class="linkWrap noCount">Notifications <span class="count _5wk0 hidden_elem uiSideNavCountText">(<span class="countValue fsm">0</span><span class="maxCountIndicator"></span>)</span></div>
Div öğesinin içinde "Bildirimler" kelimeleri bulunur. Öyleyse neden işe yaramıyor?
Facebook'ta bu sayfaya gidin: https://www.facebook.com/settings
XPath aracılığıyla herhangi bir alanı vurgulamak için bu krom uzantısını kullanın .
Yanıtlar
DMart Oct 27 2020 at 18:12
Bildirimler kelimesinin önünde bir boşluk var:
WebElement link = obj.driver.findElement(By.xpath("//div[contains(text(), 'Notifications')]"));
Ayrıca, öğeyi bulmaya çalışmadan önce bir bekleme öğesi eklemelisiniz:
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
Sorunu bu topluluktaki bazı harika insanların yardımıyla buldum.
Tamam, elemanım bir iFrame içindeydi.
Öğeye erişmek için önce iFrame'e erişmem gerekiyor
WebElement iframe = obj.driver.findElement(By.xpath("//iframe[@tabindex='-1']"));
obj.driver.switchTo().frame(iframe);
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı