如何在SportBookReview.com中触发硒中的右滚动?

时间:2019-06-20 12:05:59

标签: javascript html selenium web-scraping

我正在网上抓取以下网址:

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

页面的最右侧有一个向右滚动按钮,但是在检查其来源时,我没有找到与该按钮相关的单击的任何链接或JavaScript。这是我的问题:

  1. 没有JavaScript或链接,是什么控制单击右滚动按钮的行为?还是按钮上没有我不知道的事件监听器(JavaScript的初学者非常了解)
  2. 如果要抓取页面,可以通过模拟硒中的单击(例如“ button.click()”)来向右滚动。但是,我发现这容易出错。例如,Chrome webdriver始终存在ClickInterceptedException。是否有更好的方式在页面右侧抓取内容?

2 个答案:

答案 0 :(得分:0)

要单击向右箭头按钮,请使用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;
     }

    }

答案 1 :(得分:0)

这只是我的两分钱,我会说我的JavaScript技能普通而简单。我确实经常使用JavaScript,WebDriver和Selenium。

如果我理解您的最初问题(我对您的问题还不够了解,无法回答),昆杜克写的#hiddenEl { display: none; font-weight: bold; }基本上是正确的。我只是在这里提供经过测试并可以正常工作的解决方案。

<label for="pet-select">Choose a pet:</label>

<select id="selectEl">
  <option value="1">Hide hidden 1</option>
  <option value="661056067">Show hidden 1</option>
  <option value="2">Hide hidden 2</option>
  <option value="3">Hide hidden 3</option>
  <option value="571855424">Show hidden 2</option>
  <option value="4">Hide hidden 4</option>
</select>

<div id="hiddenEl"><h2>Here is the hidden div!</h2></div>

这将单击第一行中的向右箭头,并使其向前移动。我不明白您的问题,因为箭头在DOM中作为元素出现,并允许用户对其进行操作。 您可以添加

use while loop and check if button exists.if yes it will click() once it can't find jumps out of the loop

如果需要。当箭头在那里时,它将显示为真实。我可以一直向右滚动,确认到达终点后箭头消失。