Код по большей части выглядит нормально. Я собираюсь предположить, что где-то вверху есть строка, похожая на:
List<WebElement> tyreWidth = dropdownWidth.getOptions();
В противном случае начальный цикл потерпит неудачу, и все будет спорным.
Единственное другое предложение, которое у меня есть, заключается в том, что, поскольку раскрывающиеся списки динамически заполняются (или, по крайней мере, это впечатление, которое вы производите), JavaScript, который заполняет параметры «Выделение» и «Диаметр», не запускается правильно, поэтому вы всегда получаете значения по умолчанию. Посмотрите, совпадает ли эта временная шкала с тем, что вы видите:
dropdownWidth.selectByIndex(i);
- Устанавливает раскрывающийся список ширины, но, поскольку он все еще имеет фокус, ничего не меняется
dropdownSection.selectByIndex(j);
- Устанавливает раскрывающийся список разделов, в результате чего раскрывающийся список ширины теряет фокус и срабатывает
- Ширина теперь считается установленной, поэтому она динамически воссоздает список для Раздела и по умолчанию использует первый параметр
dropdownDiameter.selectByIndex(k);
- Устанавливает диаметр для первой опции
- нажмите (), нажмите () и начните сначала
Таким образом, каждый раз, когда вы устанавливаете сечение, он сбрасывает ширину, которая сбрасывает сечение, а диаметр всегда является значением по умолчанию
Попробуйте пройтись по своему коду и посмотрите, так ли это. Если это так, вам просто нужно сделать что-то, чтобы щелкнуть из выпадающего меню после его установки.
public void clickOut() {
driver.findElement(By.tagName("body")).click();
}
Добавьте clickOut();
после каждого оператора .selectByIndex()
и перед sleep()
. Это приведет к тому, что раскрывающийся список потеряет фокус, и мы надеемся, что вторичные и третичные раскрывающиеся списки будут заполнены правильно.