Как решить net.thucydides.core.webdriver.exceptions.ElementShouldBeVisibleException- селен - PullRequest
0 голосов
/ 25 августа 2018

Я автоматизирую страницу, на которой я должен выбрать две цены, при выборе первой цены страница идет вниз по прокрутке, и там, где тест не пройден, я получаю ошибку, я уже пробовал с явными ожиданиями и thread.sleep Но это не работает. есть идеи?

это ошибка:

net.thucydides.core.webdriver.exceptions.ElementShouldBeVisibleException: ожидаемое условие не выполнено: ожидание [[RemoteWebDriver: chrome на XP (e64b73bc32012e0506c1b2816cbc2ac2)] -> xpath: // div] id] // div [@] [@ data-bind = 'html: Price']], которое будет отображаться (пробовали в течение 50 секунд с интервалом в 100 миллисекунд)

и это мой код:

public void escogerPreioMasCaro() throws InterruptedException {

        List<WebElementFacade> listPreciosCaros = findAll(
                "//div[@class='availabilityIn box']//span[@data-bind='html: Price']");

        String[] strVectorCaros = new String[listPreciosCaros.size()];
        int i = 0;

        for (WebElementFacade listado : listPreciosCaros) {

            System.out.println("Lista Precios Caros" + listado.getText());

            strVectorCaros[i] = listado.getText().replaceAll("COP", " ").trim();
            i++;
        }
        System.out.println(Arrays.toString(strVectorCaros).trim());

        double[] vec1 = new double[strVectorCaros.length];

        for (int g = 0; g < strVectorCaros.length; g++) {
            try {
                vec1[g] = Double.parseDouble(strVectorCaros[g]);
            } catch (NumberFormatException ex) {

                System.err.println("Ilegal input");
            }
        }
        // System.out.println(Arrays.toString(vec1));
        double precioMayor = vec1[0];
        for (int x = 0; x < vec1.length; x++) {
            // System.out.println(nombres[i] + " " + sueldos[i]);
            if (vec1[x] > precioMayor) { //
                precioMayor = vec1[x];
            }
        }

        System.out.println("PrecioCaro" + precioMayor);
        String precioMayorString = String.valueOf(precioMayor);
        System.out.println("string " + precioMayorString);

        for (WebElementFacade listado2 : listPreciosCaros) {

            if (listado2.getText().contains(precioMayorString)) {
                System.out.println(precioMayorString);
                listado2.click();
            }
        }
        Thread.sleep(2000);
    }

Что я делаю, так это просматриваю ряд цен и разделяю их, выбирая только число, а затем передаю их вектору двойного типа, чтобы иметь возможность сравнивать цены и выбирать самый дорогой

это страница автоматизации, ошибка выдает ее после выбора пункта назначения и даты поездки

https://www.vivaair.com/co/flight/reserva

1 Ответ

0 голосов
/ 26 августа 2018

Как я понял, вы пытаетесь найти и выбрать билет с максимальной ценой.

Вот пример кода, чтобы найти и выбрать максимальную цену для From и To figss:

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

List<Double> pricesDouble = new ArrayList<>();
//Get all prices without currency of FROM Flight section
List<WebElement> fromPrices = driver.findElements(By.cssSelector("#divAvailabilityOut span[data-bind='html: PriceWithoutCurrencySymbol']"));
//To get all prices without currency of TO Flight section use code below
//List<WebElement> toPrices = driver.findElements(By.cssSelector("#availabilityLoadingIn span[data-bind='html: PriceWithoutCurrencySymbol']"));

fromPrices.forEach(e -> {
    try {
        pricesDouble.add(Double.parseDouble(e.getAttribute("innerText")));
    } catch (NumberFormatException ex) {
        System.err.println("Ilegal input");
    }
});
//Assert.assertTrue(pricesDouble.size()>0, "Get at least one price");

int indexOfMaxPrice = pricesDouble.indexOf(Collections.max(pricesDouble););

//Get clickable element with max price
fromPrices.get(indexOfMaxPrice).findElement(By.xpath("ancestor::div[@class='totalPrice']")).click();

Здесь полезные ссылки:

https://www.w3schools.com/cssref/css_selectors.asp https://www.w3schools.com/xml/xpath_intro.asp

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