在Selenium Webdriver中循环页面

时间:2015-06-07 09:12:09

标签: java selenium selenium-webdriver

我面临的问题是如何在下面创建循环这样的解释......?

https://drive.google.com/file/d/0B9-9eJW3sN3tS0hnMU9pd29SX2s/view?usp=sharing

2 个答案:

答案 0 :(得分:1)

public class StackOverFlow {

    @Test
    public static void keepClicking(){

        WebDriver driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
        driver.manage().window().maximize();

        driver.get("http://www.quackit.com/html/codes/html_radio_button.cfm");

        List<WebElement> radios = driver.findElements(By.xpath("//*[@id='contentbar']/div/table[1]//input[@type='radio']"));

        for (int i = 0; i < radios.size(); i++) {

            // if you are getting stale element exception because of the page reload
            radios = driver.findElements(By.xpath("//*[@id='contentbar']/div/table[1]//input[@type='radio']"));

            System.out.println(radios.get(i).getAttribute("value"));

            // select your radio and click to go to next page
            radios.get(i).click();
            driver.findElement(By.xpath("//*[@id='contentbar']/div/table[1]/tbody/tr[2]/td[2]/form/input[4]")).click();

            // come back to your main page
            driver.findElement(By.xpath("//*[@id='contentbar']/div/p[2]/a")).click();
        }
    }

}

运行以上代码进行检查 - 你有多个单选按钮,转到下一页,回到主页面并点击下一个收音机 - 循环播放。

答案 1 :(得分:0)

您可以尝试以下代码:

    WebDriver driver = new FirefoxDriver();
    driver.navigate()
            .to("https://www.garuda-indonesia.com/other-countries/en/index.page");
    driver.manage().window().maximize();
    driver.findElement(By.id("ui-id-4")).click();
    WebDriverWait wait = new WebDriverWait(driver, 30);
    wait.until(
            ExpectedConditions.visibilityOfElementLocated(By
                    .id("originairportcode"))).sendKeys("j");
    wait.until(
            ExpectedConditions.visibilityOfElementLocated(By
                    .cssSelector("div#autocomplete-originairportcode ul#ui-id-9  li#CGK a")))
            .click();
    driver.findElement(By.id("destairportcode")).sendKeys("bali");
    ;
    wait.until(
            ExpectedConditions.visibilityOfElementLocated(By
                    .cssSelector("div#autocomplete-destairportcode ul#ui-id-16 li#DPS a")))
            .click();
    driver.findElement(By.id("departuredate")).click();
    List<WebElement> ddate = driver.findElements(By
            .cssSelector("a.ui-state-default"));
    for (WebElement dd : ddate) {
        if (dd.getText().equals("30")) {
            dd.click();
        }
    }
    driver.findElement(By.id("arrivaldate")).click();
    driver.findElement(By.cssSelector("a.ui-datepicker-next.ui-corner-all"))
            .click();
    List<WebElement> rdate = driver.findElements(By
            .cssSelector("a.ui-state-default"));
    for (WebElement dd : rdate) {
        if (dd.getText().equals("31")) {
            dd.click();
        }
    }
    driver.findElement(By.id("inputFormBookFlight")).submit();
    List<WebElement> allRadios = wait
            .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By
                    .xpath("//div[@class='divtableResultsSD']/table/tbody/tr/td/table[@id='left']/tbody/tr/td/table/tbody/tr/td/input")));
    driver.findElement(By.id("btnCheckPriceSdai")).click();
    driver.navigate().back();
    //first radio button is already selected,start index with 1
    for (int i = 1; i < allRadios.size(); i++) {
        allRadios = wait
                .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By
                        .xpath("//div[@class='divtableResultsSD']/table/tbody/tr/td/table[@id='left']/tbody/tr/td/table/tbody/tr/td/input")));
        allRadios.get(i).click();
        driver.findElement(By.id("btnCheckPriceSdai")).click();
        driver.navigate().back();
    }
    driver.close();

}