选择注册表单上的所有复选框

时间:2015-07-26 20:09:59

标签: selenium-webdriver

我正在尝试检查注册表单上的所有复选框。但是它给出了 org.openqa.selenium.NoSuchElementException。

这是我尝试过的代码。

public class SelectCheckboxes {

    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        driver.get("http://www.wufoo.com/gallery/templates");
        driver.findElement(By.xpath("//*[@id='reg']")).click();
        driver.findElement(By.xpath("//*[@id='stage']/tbody/tr/td[2]/ul/li[2]/a/b")).click();
        List<WebElement> elements = driver.findElements(By.xpath("//input[@type='checkbox']"));
        for (WebElement el : elements) {
            if (!el.isSelected()) 
                el.click();
            System.out.println("Checkboxes are selected");  
        }

2 个答案:

答案 0 :(得分:0)

可能隐藏了部分复选框,然后尝试添加其他检查

if (!el.isSelected() && el.isDisplayed()) 
    el.click();

但这只是建议,确保我们需要查看html代码的确切部分。

答案 1 :(得分:0)

您的代码几乎是正确的。但我认为你错过了,注册表格中有一个iframe。在对表单执行任何操作之前,您需要将控制权切换到iframe,然后执行您的任务。

以下是相同的工作代码。

public class SelectMultipleCheckboxes {

    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        driver.manage().window().maximize();
        driver.get("http://www.wufoo.com/gallery/templates");

        driver.findElement(By.xpath("//*[@id='reg']")).click();
        driver.findElement(By.xpath("//*[@id='stage']/tbody/tr/td[2]/ul/li[2]/a/b")).click();

        //Switch to Iframe
        WebElement iframe = driver.findElement(By.xpath("//*[@id='wufooFormwu07ihv0jonvuv']"));
        driver.switchTo().frame(iframe);
        driver.findElement(By.xpath("//*[@id='Field10']")).click();

        //Capturing all xpath in the list
        List<WebElement> elements = driver.findElements(By.xpath("//input[@type='checkbox']"));
        for (WebElement el : elements) {
            if (!el.isSelected()) 
                el.click();
            System.out.println("Checkboxes are selected");
        }

        driver.switchTo().defaultContent();// Iframe is Switched to Main Again

        driver.close(); // Closes the current driver instance. 
        driver.quit(); // Closes all instances of browser.
      }  
    }