我试图使用Java中的Sikuli从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']
答案 0 :(得分:1)
要测试部分文字的值,您可以使用contains()
。因此你可以试试这个:
"//select[@name='mySelect']/option[contains(.,'Some Text')]"
但在我看来,最好使用value属性:
"//select[@name='mySelect']/option[@value='ab']"