Как активировать правильную прокрутку селена в SportBookReview.com? - PullRequest
0 голосов
/ 20 июня 2019

Я перебираю в Интернете следующий URL:

https://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/?date=20190311

В правой части страницы есть правая кнопка прокрутки, но при проверке ее источника я не вижунайти любую ссылку или JavaScript на клик, связанный с кнопкой.Вот мой вопрос:

  1. Без javascript или ссылки, что контролирует поведение нажатия правой кнопки прокрутки?Или есть какой-нибудь прослушиватель событий на кнопке, о котором я не знаю (очень начинающее знание javascript)
  2. Если я хочу почистить страницу, я могу прокрутить вправо, имитируя щелчок в селене, например "button.click ()».Тем не менее, я считаю, что это склонно к ошибкам.Например, всегда есть исключение ClickInterceptedException с веб-драйвером Chrome.Есть ли лучший способ очистки содержимого справа от страницы?

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

Это всего лишь два моих цента по этому вопросу, и я бы сказал, что мои навыки работы с javascript средние и упрощенные.Хотя я часто использую javascript, webdriver и selenium.

То, что Кундук написал use while loop and check if button exists.if yes it will click() once it can't find jumps out of the loop, в принципе верно, если я понимаю вашу первоначальную проблему (я не до конца понимаю ваши вопросы, чтобы ответить).Я здесь для того, чтобы предоставить решение, которое я протестировал и которое работает.

const url2 = "https://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/?date=20190311"
async function main(){
    const client = webdriverio.remote({
        desiredCapabilities: {
            browserName: "chrome",
            deprecationWarnings: "false"
        }
    })
    await client.init();
    await client.url(url2);
    await client.waitForVisible("#bettingOddsGridContainer", 10000);
    await client.click("#bettingOddsGridContainer > div:nth-child(3) > div:nth-child(4) > div:nth-child(3) > div > div > div:nth-child(1) > i");
}

Это щелкнет стрелку вправо в первом ряду и позволит ему двигаться вперед.Я не понял вашего вопроса, так как стрелка отображается как элемент в DOM и позволяет пользователю манипулировать ею.Вы можете добавить

let rightArrowExist = await client.isExisting("#bettingOddsGridContainer > div:nth-child(3) > div:nth-child(4) > div:nth-child(3) > div > div > div:nth-child(1) > i");

, если хотите.Это покажется правдой, пока есть стрела.Я могу прокрутить весь путь вправо и подтвердить, что стрелка исчезнет, ​​как только вы достигнете конца.

0 голосов
/ 20 июня 2019

Чтобы нажать на кнопку со стрелкой вправо, используйте цикл while и проверьте, существует ли кнопка. Если да, она щелкнет (), как только не сможет найти выпадения из цикла.

driver.get("https://www.sportsbookreview.com/betting-odds/nba-basketball/money-line/?date=20190311");
WebDriverWait wait=new WebDriverWait(driver,40);

 while(true)
    {
     if (wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("(//i[@class='sbr-icon-chevron-right'])[1]"))).size()>0)
    {
    driver.findElement(By.xpath("(//i[@class='sbr-icon-chevron-right'])[1]")).click();

    }
    else
    {
         break;
     }

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