У меня есть этот 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.
Я хотел бы знать, будет ли это работать и есть ли более простой способ сделать это, учитывая исходную информацию, которой я располагаю.
РЕДАКТИРОВАТЬ: Способ, который я предложил, работает, но для более простого решения следует увидеть принятый ответ