2012-09-03 20 views
1

我正在運行一個Java轉換使用JDev的selenium 2.0腳本。我有一個例子,我打開一個模式窗口並搜索一個像%SomeText%這樣的字符串,並且它會在它下面創建一個記錄,同一個窗口。現在,我想確保它已經生成了我正在查找的文本,並且如果我獲得了該文本,請在模式窗口中單擊「確定」。任何想法怎麼辦呢?我做了以下內容:無法讀取搜索結果使用硒2.0

//this is working 
driver.findElement(By.id("_afrFilterpt1_afr__UISatr_afr_0_afr_AT1_afr__ATp_afr_t2_afr_c3::content")).sendKeys(Keys.RETURN); 

//this doesn't work, text given here is part of the text which is returned after search 
assertTrue((driver.findElements(By.xpath("contains(text(),'Approved:Create Grade Ladder (AU_New Grade Ladder205, 2012-08-31)')")).size() > 0) ? true:false); 

//this works if above line is deleted, else this also does not work 
driver.findElement(By.xpath("//button[text()='OK']")).click(); 
+0

請添加HTML標記 – 2012-09-03 06:45:27

+0

@ user1506541,別忘了標記答案! –

回答

1

另一種方法,你可以寫2號線是driver.getPageSource()包含(文本)。

其次,您的xpath不正確,因爲它正在尋找包含「Approved:Create Grade Ladder(AU_New Grade Ladder205,2012-08-31)」的根節點作爲參考節點尚未提供給xpath 。

總之,說你正在尋找的標記,看起來像這樣:

<html> 
    Approved:Create Grade Ladder (AU_New Grade Ladder205, 2012-08-31) 
</html> 

如果你瞭解到的XPath關閉W3Schools的,這聽起來可能有點混亂,但它很像目錄。

默認情況下,您的引用以/開頭,因此標籤必須包含您正在搜索的文本。除此之外,text()僅向您提供當前節點的文本以及它下面的所有節點。

看看下面的例子

<html> 
    <body> 
    <div>Some text <span>with a span</span>.</div> 
    </body> 
</html> 

如果你沒有driver.findElements(By.xpath("//div[contains(text(),'Some text with a span.')]")).size();你會發現,這將等於0。

你可以看到爲什麼,如果你只是使用XPath選擇文本節點。見下圖: Xpath Example