Selenium - 使用按钮单击进行水平滚动

时间:2017-01-31 14:01:58

标签: selenium selenium-chromedriver selenium-ide

我是selenium的新手,正在尝试一些可以让我的工作变得更轻松的东西。

这是一个网址 - https://www.starz.com/movies

我想点击热门类别下页面右下角的箭头按钮,但我不能。此外,我必须多次点击它,直到所有电影都加载到该类别下。

这是我尝试的一些代码。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class selenium {
    public static void main(String args[]) throws InterruptedException {

        WebDriver driver = new FirefoxDriver();
        driver.get("https://www.starz.com/movies");
        System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver.exe");

        driver.findElement(By.id("popular")).click();
    }
}

上面的代码有效,但它不会点击箭头按钮,而是点击放置在热门类别下的中心的电影。

2 个答案:

答案 0 :(得分:0)

您需要点击<button>元素而不是<div>

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class selenium {
    public static void main(String args[]) throws InterruptedException {

        WebDriver driver = new FirefoxDriver();
        driver.get("https://www.starz.com/movies");
        System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver.exe");

        driver.findElement(By.xpath("//div[@id='popular']//button[@class='slider-next slick-arrow']")).click();
    }
}

答案 1 :(得分:0)

By.id("popular")将为您提供整行。所有箭头都具有相同的类sz-icon-arrow-next,因此您需要使用常用行和箭头定位器来定位箭头

driver.findElement(By.cssSelector("#popular .sz-icon-arrow-next")).click();

修改

如果要单击箭头到最后,请将其放入列表并检查其是否仍然存在

int size = 1;
while (size > 0) {
    List<WebElement> arrow = driver.findElements(By.cssSelector("#popular .sz-icon-arrow-next"));
    size = arrow.size();
    if (size > 0) {
        arrow.get(0).click();
    }
}