2013-07-10 40 views
0

我想單擊Java中使用Sikuli的select語句中的特定選項。Sikuli Java找到一個包含特定文本的選擇選項

鑑於此select語句:

<select name="mySelect"> 
    <option value="ab">AB 273xc Some Text</option> 
    <option value="cd">CD i8df4 Some More Text</option> 
    <option value="ef">EF q43th And Text Once More</option> 
</select> 

下面的作品,如果我知道包含在選項的完整確切的文本:

driver.findElement(By.xpath("//select[@name='mySelect']/option[.='CD i8df4 Some More Text']")).click(); 

的問題是,總是有字符串中隨機文本(在這種情況下是i8df4),每次都會改變,所以我不知道這個文本會是什麼。

所以我想點擊最後包含文字「Some More Text」的選項。我看到有一個CONTAINS函數,但我不知道如何在這種情況下使用它(如果它甚至可以使用)。

所以需要做某種模式匹配或正則表達式中的選項部分是這樣的:

option[.='do pattern match here looking for Some More Text'] 

回答

1

爲測試文本的一部分,您可以使用的價值。因此,您可以試試這個:

"//select[@name='mySelect']/option[contains(.,'Some Text')]" 

但在我看來,這將是更好地使用值屬性:

"//select[@name='mySelect']/option[@value='ab']" 
+0

真棒!第一個答案正是我需要的!我無法弄清楚的部分是將CONTAINS中的句點作爲第一個字符串,它將與所有找到的選項屬性進行比較。 而FYI的價值屬性也是隨機產生的(我忘了提及),這樣就不會起作用。 – jsherk