Как непрерывно копировать данные с одной страницы на другую на одном и том же веб-сайте, используя селен на Java - PullRequest
0 голосов
/ 07 января 2019

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

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

 @Override
    public void run() {
        long lastHeight = (long) ((JavascriptExecutor)driver).executeScript("return document.body.scrollHeight");

            int i = 0;
            int times = 0;

        do {

            row = (ArrayList<WebElement>) driver.findElements(By.cssSelector(".event-row-container.ng-scope"));

            WebElement element = driver.findElement(By.cssSelector(".paybillnumbers"));
            ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }


            new WebDriverWait(driver,20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("li.ng-scope[translate='next']"))).click();
            times++;
            rows.addAll(row);
            }
            while(times <=6);

        System.out.println(rows.size());

        //System.out.println(driver.findElement(By.cssSelector(".betslip-row")).getLocation().getY());



            for (WebElement rowDetails : rows) {

                new WebDriverWait(driver,30).until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(".event-market.market-3-way.market-selections-3")));
                ArrayList<WebElement> rowDetails2 = (ArrayList<WebElement>) rowDetails.findElements(By.cssSelector(".event-market.market-3-way.market-selections-3"));
                ArrayList<WebElement> teamDetails = (ArrayList<WebElement>) rowDetails2.get(0).findElements(By.cssSelector(".event-selection.ng-scope"));

                Bet teams = new Bet();
                for (int x = 0; x < 3; x++) {

                    switch (x) {

                        case 0:
                            teams.setHome_team(teamDetails.get(0).findElement(By.cssSelector(".event-text.ng-scope")).getText().toLowerCase());
                            teams.setHome_win(teamDetails.get(0).findElement(By.cssSelector(".ng-binding")).getText());

                            break;
                        case 1:
                            teams.setDraw(teamDetails.get(1).findElement(By.cssSelector(".ng-binding")).getText());

                            break;
                        case 2:
                            teams.setAway_team( teamDetails.get(2).findElement(By.cssSelector(".event-text.ng-scope")).getText().toLowerCase());
                            teams.setAway_win(teamDetails.get(2).findElement(By.cssSelector(".ng-binding")).getText());
                            teams.setSite(" SportPesa");
                            break;


                    }

                }
                teamsdata.add(teams);


            }
        driver.close();
    }
    }

Я ожидаю, что выходные данные будут со всех доступных страниц, но все, что я получу, это данные с последней страницы.

...