Selenium webdriver: поиск всех элементов с похожим идентификатором

У меня есть этот xpath: // *[@id="someId::button"]

При нажатии открывается выпадающий список значений.

Теперь я знаю, что все элементы в списке имеют такой идентификатор:

//*[@id="someId--popup::popupItemINDEX"]

, где ИНДЕКС — это число от 1 до любого количества вариантов.

Я также знаю значение, которое я должен нажать.

Один из вопросов: поскольку я всегда буду знать идентификатор кнопки, которая создает раскрывающийся список, могу ли я получить все элементы в раскрывающемся списке с помощью многоразовогометода? (Мне нужно взаимодействовать с более чем одним раскрывающимся списком)

Я думал об этом так: получить корень начального идентификатора, например:

//*[@id="someId 

, затем добавить остальные: --popup::popupItem. Мне также нужно добавить индекс, и я подумал, что мог бы использовать блок try (чтобы пройти через исключения, когда я даю индекс больше ожидаемого), например:

 for(int index=1;index<someBiggerThanExpectedNumber;index++){
     try{
         WebElement aux= driver.findElement(By.xpath(builtString+index+"\"]"));
         if(aux.getText().equals(myDesiredValue))
             aux.click();
     }catch(Exception e){}
 }

Обратите внимание, что я использую API веб-драйвера и java.

Я хотел бы знать, будет ли это работать и есть ли более простой способ сделать это, учитывая исходную информацию, которой я располагаю.

РЕДАКТИРОВАТЬ: Способ, который я предложил, работает, но для более простого решения следует увидеть принятый ответ

11
задан CosminO 22 May 2012 в 09:46
поделиться