У меня есть этот XPath: //*[@id="someId::button"]
Селен WebDriver: найти все элементы с подобным идентификатором
Нажатие он показывает выпадающий список значений.
Теперь, я знаю, что все элементы в списке имеет идентификатор, как это:
//*[@id="someId--popup::popupItemINDEX"]
, где INDEX это число от 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){}
}
Обратите внимание, что я с помощью WebDriver api и java.
Я хотел бы знать, будет ли это работать, и если есть более простой способ сделать это, учитывая исходную информацию, которую у меня есть.
EDIT: Как я предложил работ, но и для более легкого решения, принятый ответ следует рассматривать
попытки найти все элементы не будут работать, так как список генерируется ad-hoc, кроме части id, все остальные атрибуты имеют разные значения все время, даже если значения одинаковы. Сначала мне нужно нажать кнопку выпадающего меню, чтобы иметь возможность доступа/видеть элементы. Спасибо за вклад в поиск детей элементов! – CosminO
Я все еще не вижу проблемы. Нажмите кнопку раскрывающегося списка, затем найдите все отображаемые элементы? –
'// * [содержит (@id, 'someId - popup :: popupItem') и text() = 'myDesiredValue']' выбирает один элемент, в котором ID содержит «someId - popup :: popupItem» и какой текст значение равно вашему желаемому значению. ... после щелчка нажатием кнопки, конечно. –