Передайте значение в раскрывающемся списке 3 в Java - PullRequest
0 голосов
/ 01 мая 2018

Мне нужно сделать гусеничный ход для веб-сайта шин. Для этого мне нужно извлечь все измерения, а затем передать это измерение в раскрывающемся списке 3, нажать кнопку поиска и извлечь название бренда и цену для каждого продукта. Затем вернитесь к следующему набору измерений и ... повторяйте, пока все измерения не будут закончены.

for (int i = 0; i < tyreWidth.size(); i++) {
            String option1 = tyreWidth.get(i).getText();
            dropdownWidth.selectByIndex(i);
            Thread.sleep(3000);

            tyreSections = dropdownSection.getOptions();
            for (int j = 0; j < tyreSections.size(); j++) {
                String option2 = tyreSections.get(j).getText();
                dropdownSection.selectByIndex(j);
                Thread.sleep(3000);
                tyreDiameter = dropdownDiameter.getOptions();

                for (int k = 0; k < tyreDiameter.size(); k++) {
                    dropdownDiameter.selectByIndex(k);
                    Thread.sleep(3000);
                        driver.findElement(By.xpath(
                                ".//*[@id='content-groesse']/div[3]/span[2]/button"))
                                .click();// search button
                        driver.findElement(By.xpath(
                                ".//*[@id='bottomArticleCount']/ul/li[3]/button"))
                                .click();// search all oferts
                        driver.navigate().back();
                        driver.navigate().back();
                        Thread.sleep(1000);
                        listDimensions.add(option1 + " " + option2 + " "
                                + tyreDiameter.get(k).getText());
                        System.out.println(option1 + " " + option2 + " "
                                + tyreDiameter.get(k).getText());
                    }

                        tyreDiameter.removeAll(tyreDiameter);
                            }
            tyreSections.removeAll(tyreSections);
        }

        for (int i = 0; i < listDimensions.size(); i++) {
            writer.println(listDimensions.get(i));

        }
        writer.close();

    }

Проблема: это работает только для первого набора измерений. Любые предложения, пожалуйста? Спасибо.

1 Ответ

0 голосов
/ 04 мая 2018

Код по большей части выглядит нормально. Я собираюсь предположить, что где-то вверху есть строка, похожая на:

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(). Это приведет к тому, что раскрывающийся список потеряет фокус, и мы надеемся, что вторичные и третичные раскрывающиеся списки будут заполнены правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...