如何使用“数据驱动方法”从下拉菜单中选择2个或更多值-现在可以使用

问题描述

这是我的代码

Excel实用程序:

public static Object [][] getTestData(String sheetName) 
{
    try 
    {
        FileInputStream ip = new FileInputStream(TESTDATA_SHEET_PATH);

        try 
        {
            book = WorkbookFactory.create(ip);
        } 
        catch (InvalidFormatException e) 
        {
            // Todo Auto-generated catch block
            e.printstacktrace();
        } 
        catch (IOException e) 
        {
            // Todo Auto-generated catch block
            e.printstacktrace();
        }

        sheet = book.getSheet(sheetName);
            
        Object data[][] = new Object[sheet.getLastRowNum()][sheet.getRow(0).getLastCellNum()];

        for (int i = 0; i < sheet.getLastRowNum(); i++)
        {
            for (int k = 0; k < sheet.getRow(0).getLastCellNum(); k++)
            {
                // if(data[i][k]!=null)
                data[i][k] = sheet.getRow(i+1).getCell(k).toString();
            }
        }

        return data;
    }
    catch (FileNotFoundException e) 
    {
        // Todo Auto-generated catch block
        e.printstacktrace();
        System.out.println("Not able to fetch the values from the Excel");
    }

    return null;
}
    

页面方法,我需要从下拉列表中选择多个值:

public void pipeline(String fieldvalue,String savepipe)
{
    elementutils.waitforElementPresent(DealsLink);
    elementutils.doclick(DealsLink);
    elementutils.waitforclickingElement(pipeline);
    elementutils.doclick(pipeline);
    elementutils.waitforElementPresent(Selectfieldsdropdownclick);
    elementutils.doclick(Selectfieldsdropdownclick);
    elementutils.selectvaluefromdropdown(selectfieldsvalueselection,fieldvalue);
}

测试页方法

@DataProvider
public Object[][] dealpipeline()
{
        Object data[][] = ExcelUtil.getTestData(AppConstants.Deal_Pipeline_Sheet_Name);
        return data;
}
    
@Test(priority=10,dataProvider="dealpipeline")
public void getdealspipelineinfo(String selectfields,String savepipelineas)
{
    dealspage.pipeline(selectfields,savepipelineas);
}

页面:有一个下拉菜单,我们可以从下拉菜单中一次选择两个值

![在此处输入图片描述] [1]

屏幕截图显示了下拉列表

  [1]: https://i.stack.imgur.com/VuP03.png

具有值的Excel文件选择字段Stage,Commission。

运行此测试时,它不会选择Excel中存在的值,也不会显示任何错误。有人可以让我知道需要做什么吗?

解决方法

您可以使用以下方法在下拉菜单中选择值。

public void pipeline(String fieldvalue,String savepipe){
    String[] str = fieldvalue.split(",");
    for(int i=0; i<str.length; i++) {
        //performed the required operations as per requirement by accessing the value using str[i]
    }
}

已编辑:

public void multiselectdropdown(By locator,String value) { 
    String[] valueTemp = value.split(",");
    for(int i=0;i<valueTemp.length;i++) { 
        List<WebElement> dropdownoptions = driver.findElements(locator); 
        for(int j=0; j<dropdownoptions.size(); j++) {
            String text = dropdownoptions.get(j).getText();
            try { 
                if(!text.isEmpty()) { 
                    if(text.equalsIgnoreCase(valueTemp[i])) { 
                        dropdownoptions.get(j).click(); 
                        break; 
                    } 
                } 
            }catch (Exception e) { }
        }
    }
}

**注意:您可以从下拉列表中选择最多两个值,因此请根据需要更新代码。您看到过时的元素异常是因为下拉列表的每个选择都在更新。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...