2017-10-08 74 views
-1

PAGE - 臉書如何選擇xpath中具有空文本後裔的元素?

我想要在facebook上打印所有朋友(名稱,鏈接到信使),但我有一個問題。我不知道。我怎樣才能得到它包含兩個屬性的元素:

  1. "//li[@class='_42fz']/a"
  2. "class='_568-'" without text (if div of the class="_568-"/是沒有文字就意味着朋友是在網上)。

我的代碼是:

List<WebElement> friendElements = driver.findElements(By.xpath("//li[@class='_42fz']/a")); 

但我想只有好友在線的元素。代碼

例子:

<li id="js_pq" class="_42fz" data-id="101022398278367" aria-controls="js_po" aria-haspopup="true" aria-describedby="js_pp"> 
<a class="_55ln _qhr" href="https://web.facebook.com/messages/t/107022338465367" rel="ignore"> 
<div class="_55lp"> 
<div class="_55lq" aria-hidden="true"> 
<div class="_5bon"> 
<div class="_568z"> 
<div class="_568-">1d</div> 
</div> 
</div> 
<div class="_55lr">Jan Kowalski</div> 
<div class="_55ls"/> 
</div> 
</a> 
</li> 
<li id="js_pq" class="_42fz" data-id="101" aria-controls="js_po" aria-haspopup="true" aria-describedby="js_pp"> 
<a class="_55ln _qhr" href="https://web.facebook.com/messages/t/290222338565367" rel="ignore"> 
<div class="_55lp"> 
<div class="_55lq" aria-hidden="true"> 
<div class="_5bon"> 
<div class="_568z"> 
<div class="_568-"></div> 
</div> 
</div> 
<div class="_55lr">Kowalski Jan</div> 
<div class="_55ls"/> 
</div> 
</a> 
</li> 

在這種情況下我的程序必須得到朋友的姓名和HREF從第二李信使,因爲DIV _568-類是沒有文字,就意味着這個朋友在線。如果這個div有文本例如<div class="_568-">1d</div>這意味着該朋友不在線。

+0

請包括包含您試圖通過XPath識別的元素的HTML。 –

+0

這是一個臉書,我只想要在線的朋友獲取姓名和href(鏈接到信使)。 – PL2000PL

+2

請通過提供輸入文檔的結構使您的問題自成一體。你不能指望我們去其他地方去研究它。 –

回答

0

HTML片段,你粘貼是無效的XML,所以YMMV,但這應該選擇你在找什麼:

//li[@class='_42fz']//div[@class='_568-'][not(text())]/../../../../../a/@href 

或更優雅:

//li[@class='_42fz'][descendant::div[@class='_568-'][not(text())]]/a/@href 

DEMO

+0

這是工作。非常感謝你! – PL2000PL

+0

@ PL2000PL如果您發現答案有幫助,請接受。此外,爲了更好地理解和參與社區,請閱讀https://stackoverflow.com/tour –