类型列表的get(int)方法未定义

时间:2018-07-10 07:10:04

标签: java selenium get

我正在尝试使用get(int)方法为类型列表创建的硒脚本,如果未选择该类型,它将选择单选按钮。

我使用以下脚本:

package automationFramework;

import java.awt.List;

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

public class FirstTestCase {

    public static void main(String[] args) throws InterruptedException {
        // Create a new instance of the Firefox driver
        System.setProperty("webdriver.gecko.driver", "/home/gradulescu/Documents/Eclipse project/geckodriver.exe");
        WebDriver driver = new FirefoxDriver();

        // Storing the Application Url in the String variable
        String url = "http://toolsqa.wpengine.com/automation-practice-form/";
        driver.get(url);        
        //Launch the Online Store Website
        List Rbtn = (List) driver.findElement(By.name("sex"));
        boolean bool = false;
        bool =  Rbtn.get(0).isSelected();
        if (bool==true)
        {Rbtn.get(1).click();
            }
        else
        {Rbtn.get(0).click();
            }

    }
}

get方法返回以下错误:

  

类型列表的方法get(int)未定义

我将Eclipse 3.8.1与JConsole 1.8.0_171-b11和Java VM版本一起使用:Java HotSpot(TM)64位服务器VM,25.171-b11

你能帮我吗?

3 个答案:

答案 0 :(得分:0)

替换:

List Rbtn = (List) driver.findElement(By.name("sex"));

具有:

List<WebElement> rBtn = driver.findElements(By.name("sex")); // this will return a list of all found elements

这是一个可行的示例代码:

driver.get("http://toolsqa.wpengine.com/automation-practice-form/");

List<WebElement> rBtn = driver.findElements(By.name("sex")); // this will return a list of all found elements
if (rBtn.get(1).isSelected()) // I'm getting the second element because the first one is only label
{   
   rBtn.get(2).click(); //click 'Female'
}
else
{   
   rBtn.get(1).click(); //click 'Male'
}

PS:始终检入开发人员工具中要使用选择器定位的元素。要打开开发工具,请在浏览器中按F12。更多信息here

答案 1 :(得分:0)

正如WebDriver的文档所述,findElements(By by)方法返回java.util.List<WebElement>({em} WebElement类的对象列表),而不是java.awt.List(awt中的 UI组件列表)。

您需要更改导入,并将代码更改为:

List<WebElement> rbtn = driver.findElement(By.name("sex"));

注意:在Java中,变量,参数,方法名称必须以小写字母开头

答案 2 :(得分:0)

boolean在默认情况下为false,因此您不必显式初始化它。同样,if(bool)也可以。第三,将findElements存储在List中时需要使用它们。第四,使用try...catch块是一个好习惯。

尝试-

package automationFramework;

import java.awt.List;

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

public class FirstTestCase {

    public static void main(String[] args){
        try {
            System.setProperty("webdriver.gecko.driver", "/home/gradulescu/Documents/Eclipse project/geckodriver.exe");
            WebDriver driver = new FirefoxDriver();

            // Storing the Application Url in the String variable
            String url = "http://toolsqa.wpengine.com/automation-practice-form/";
            driver.get(url);
            // Launch the Online Store Website
            List<WebElement> Rbtn = driver.findElements(By.name("sex"));
            boolean bool;
            bool = Rbtn.get(0).isSelected();
            if (bool)
                Rbtn.get(1).click();
            else
                Rbtn.get(0).click();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}