Основываясь на моем предыдущем вопросе Как выполнить некоторые действия для каждого значения из выпадающего списка, используя селен Java? - PullRequest
0 голосов
/ 04 октября 2018

Теперь я хочу выбрать первое значение из выпадающего списка, затем выполнить некоторые действия с ним, затем я хочу выбрать второе значение из того же выпадающего меню и выполнить то же действие с ним.Вот мой код:

WebElement bldgs=Fn_GetWebElement(CreateSSIObject.getProperty("Bldgselect"));
Select  Bldg_select=new Select(bldgs);

List<WebElement> dropdownvalues = Bldg_select.getOptions();

int count=dropdownvalues.size();

System.out.println("Total number of values are :"+count);

for(int i=1;i<count;i++) {

  if(dropdownvalues.get(i).isEnabled()) {
    Bldg_select.selectByIndex(i);

    System.out.println("Not Working :"+i);

    waitForWebPagetoLoad(2000);

    WebElement search_BTN=Fn_GetWebElement(CreateSSIObject.getProperty("search_Btn"));
    fn_Click(search_BTN);


    WebElement  add_VEND=Fn_GetWebElement(CreateSSIObject.getProperty("add_vendors"));
    fn_Click(add_VEND);

    WebElement  vendorName=Fn_GetWebElement(CreateSSIObject.getProperty("vendor_Name"));
    fn_Click(vendorName);

    vendorName.sendKeys(vendor);

    waitForWebPagetoLoad(5000);

    WebElement  search_BTN1=Fn_GetWebElement(CreateSSIObject.getProperty("search_Btn"));
    fn_Click(search_BTN1);

    WebElement  selectVendor=Fn_GetWebElement(CreateSSIObject.getProperty("select_Vendor"));
    fn_Click(selectVendor);

    WebElement  addToSite=Fn_GetWebElement(CreateSSIObject.getProperty("AddTo_Site"));
    fn_Click(addToSite);

    }
}

здесь я ищу элемент (в основном выпадающий идентификатор) и затем выбираю каждое значение с помощью selectbyindex с i для цикла.а затем я нажимаю на кнопку и выполняю еще несколько действий с ней.Теперь он выбирает только первое значение и делает все вышеперечисленное.Но он не возвращается в цикл for для выбора второго значения и выполняет те же шаги.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Я не совсем понимаю вашу проблему, но я вижу 2 проблемы, которые могут привести к путанице.

Индекс должен основываться на 0

Ваш цикл начинается ся установил на 1. Поскольку списки являются индексами на основе нуля, вы должны начать с 0

Ссылка на устаревшие элементы ??

Вы извлекаете выпадающие значения вне циклаа затем ссылки на них в цикле с использованием индекса.Тем не менее, вы выполняете много действий и событий в каждой итерации.

Возможно, вам будет лучше извлечь значения снова в каждой итерации, чтобы убедиться, что все ваши ссылки актуальны и не устарели.

0 голосов
/ 04 октября 2018

Можете ли вы попробовать решение ниже?Я не уверен, какое действие вы пытаетесь выполнить на основе выбора, но я думаю, что приведенный ниже код решит вашу проблему.

     Select drpCountry = new Select(driver.findElement(By.name("Locator")));

        List <WebElement> elementCount = drpCountry.getOptions();
        int iSize = elementCount.size();

        for(int i =0; i<iSize ; i++)
        {
            String sValue = elementCount.get(i).getText();
            System.out.println(sValue);
            drpCountry.selectByIndex(i);

                    if(sValue.equalsIgnoreCase("Selection1")){  
                    //code to be executed if condition1 is true  
                    }else if(sValue.equalsIgnoreCase("Selection2")){  
                    //code to be executed if condition2 is true  
                    }  
                    else if(sValue.equalsIgnoreCase("Selection3")){  
                    //code to be executed if condition3 is true  
                    }  

                    else{  
                    //code to be executed if all the conditions are false  
                    }  
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...