2013-05-15 114 views
1

我試圖使用通配符瀏覽了硒的DOM,使用這樣的事情...故障使用硒網絡驅動程序父:: *軸

ArrayList<WebElement> list = (ArrayList<WebElement>) driver.findElements(By.xpath("//div[contains(text(),'div_text')]/parent::*]")); 

,試圖讓所有的家長具有'div_text'的div元素。這似乎只返回直接的父母,而不是所有的父母。我需要在DOM上添加可變數量的節點。

一旦我得到的名單,我計劃

for(WebElement e: list) 
    if(e.getTagName().equals("table") && e.getAttribute("class").equals("blah") 
     e.click(); 

來遍歷一致認爲,這是不是最有效的方法,但更復雜的XPath表達式像

driver.findElements(By.xpath("//div[text()='title']/[name(parent::*) = 'table'")); 

似乎不在網絡驅動程序工作。

感謝您對此的任何見解。

回答

2

如果我正確理解你的問題,你想要的是祖先而不是父母。

XPath Axes

祖先:選取當前節點的父
父的所有祖先(父母,祖父母等):選擇當前節點的父節點

//div[text()='title']/ancestor::table嘗試爲表祖先

+1

太好了,非常感謝。我只是添加了我正在尋找的表格屬性,並且它非常完美。 // div [contains(text(),'fake')]/ancestor :: table [@ class ='today-group-header'] – JackhammersForWeeks

+0

會這樣做,但是沒有聲望。讚賞不多。 – JackhammersForWeeks

0

只有一個父元素。你可能尋找祖先

//div[contains(text(),'div_text')]/ancestor::* 

未工作有語法錯誤,你申請上的不完全軸距步驟(... /[name(parent::*)謂詞查詢...,節點或缺少*)。