2013-07-10 37 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