如何在自动化框架中添加下拉选择功能?

时间:2019-05-09 07:11:58

标签: java selenium-webdriver

我是Selenium WebDriver的新手。因此,我开始构建基于关键字的自动化框架,并成功构建了该框架并正常工作。但是现在,我陷入了一种情况,我需要从下拉列表中选择值。我知道选择功能,可以在脚本编写方法中使用它。但是在框架中,我创建了一个文件UIOperation.java,其中创建了一些方法,例如CLICKSETTEXTWAIT等。

那么,如何在同一文件中添加Select函数的代码?

我尝试了下面的代码,但是没有用。

case "SELECT":
    //Perform select from drop-down
    driver.findElement(this.getObject(p, objectName, objectType))).selectByVisibleText(value);
    break;

下面我提到了几种方法,需要为Select方法创建相同的方法。

public class UIOperation {

     WebDriver driver;
        public UIOperation(WebDriver driver){
            this.driver = driver;
        }
        public void perform(Properties p,String operation,String objectName,String objectType,String value) throws Exception{
            System.out.println("");
            switch (operation.toUpperCase()) {
            case "CLICK":
                //Perform click
                driver.findElement(this.getObject(p,objectName,objectType)).click();
                break;
            case "SETTEXT":
                //Set text on control
                driver.findElement(this.getObject(p,objectName,objectType)).sendKeys(value);
                break;

我正在使用TestNG执行此案。在excel文件中,我要添加关键字(即Click,Settext,Wait等),Object,ObjectType和Value。 (在ObjectProperties中,我定义了对象及其对象类型,如XPath,ID,名称等。)我试图通过使用Click关键字来选择下拉值,但无法为该对象选择选项。

1 个答案:

答案 0 :(得分:0)

driver.findElement返回一个没有方法selectByVisibleText的{​​{3}}对象。

要使用selectByVisibleText,则WebElement必须是<select>标记,而您必须使用WebElement

尝试一下:

case "SELECT":
    //Perform select from drop-down
    Select select = new Select(driver.findElement(this.getObject(p, objectName, objectType)));
    select.selectByVisibleText(value);
    break;