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&nbsp;<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);