У меня есть проблема, которую я пытаюсь решить. У меня есть страница с 4 выпадающими. и я хочу выбрать значение в каждом из них. Так как сайт угловой, я использовал операцию, чтобы открыть выпадающий список, а другой - выбрать значение. проблема в том, что после нажатия на раскрывающийся список, все значения находятся под одним и тем же xpath. (значения, сгенерированные после нажатия раскрывающегося списка)
Пример раскрывающегося списка 1 19 значений:
Нажатие раскрывающегося списка 2 32 значения с одинаковым xpath ![enter image description here](https://i.stack.imgur.com/wqwVv.png)
Проблема в том, что после заполнения раскрывающегося списка 1 и перехода к раскрывающемуся списку 2 xpath остается тем же, но значения меняются недостаточно быстро, поэтому я нажимаю раскрывающийся список 2, а селен пытается найти значения, но видит значения первого раскрывающегося списка. ,Как я могу сделать селен (не с потоком сна), чтобы ждать, пока мое значение не существует в раскрывающемся списке.
Это мой код для поиска значения в списке webelements (имеется в виду раскрывающийся список)
public static void clickOptionInListByXpath(String Xpath, String clickedValue)
{
Integer flag = 1;
WebElement option2;
WebDriver driver2 = WebDriverMgr.getDriver();
List<WebElement> dropdownOptions = driver2.findElements(By.xpath(Xpath));
// for (WebElement option : dropdownOptions )
for(int i= 0;i<dropdownOptions.size() && flag == 1;i++)
{
option2 = dropdownOptions.get(i);
System.out.println("\n Option is: " + option2.getText());
if(option2.getText().equals(clickedValue))
{
option2.click();
flag = 0;
}
}
}
Это мой код ожидания текста, который будет отображаться в одном элементе xpath с 1 результатом, а не в списке (xpath для более чем 1 элемента)
public static void getWebElementByXpathWithWaitTextToBeSeen(String xpath,String text)
{
WebDriver driver2 = WebDriverMgr.getDriver();
// driver2.manage().timeouts().implicitlyWait(IMPLICIT_WAITE, TimeUnit.SECONDS);
WebDriverWait wait = new WebDriverWait(driver2,EXPLICIT_WAITE);
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath(xpath),text));
}
Как я могу ждать, пока текст не появится всписок веб-элементов? и это будет обновлять список каждый раз? PS Я использую сон, он будет работать, однако я хочу код без жестко закодированных пожеланий сна