2015-06-07 36 views
-1

我的问题是如何在下面创建循环的解释......?Selenium Webdriver中的循环页面

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

+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(); 
     } 
    } 

} 

运行上面的代码检查 - 您有多个单选按钮,去到下一个页面,回到主界面,点击下一个电台 - 在一个循环。

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(); 

} 
相关问题