我面临的问题是如何在下面创建循环这样的解释......?
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();
}
}
}
运行以上代码进行检查 - 你有多个单选按钮,转到下一页,回到主页面并点击下一个收音机 - 循环播放。
答案 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();
}