2013-07-10 4 views
0

Я пытаюсь щелкнуть по определенной опции из инструкции select, используя Sikuli в Java.Sikuli Java найти параметр выбора, который содержит определенный текст

Учитывая это отборное заявление:

<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 атрибут value также генерируется случайным образом (о котором я забыл упомянуть), чтобы он не сработал. – jsherk