循环逻辑在java selenium中没有按预期工作

时间:2017-11-22 10:57:50

标签: java selenium

我想检查传递的值是否与if loop中的值匹配,如果匹配则它应该执行if loop中的代码。每次运行时会发生什么,只选择第一个值,不检查其他值。我无法弄清楚我的逻辑是什么问题。以下是我的代码

for (int i = 0; i < stageListOfFilters.size(); i++) {
                System.out.println(stageListOfFilters.get(i).getText());

                if (finalSnapshot1.toString().equals(stageListOfFilters.get(i).getText())) {

                    driver.findElement(By.xpath(".//*[@id='DS']/div/div/div[1]/div[" + i + "]/div[1]")).click();

                    System.out.println("Value of i: " + i);
                    Thread.sleep(2000);
                }
            }  

如果需要任何其他信息,请告诉我。有关详细信息,请访问this 链接。

enter image description here

您可以在下面看到快照日期过滤器列表以及与之对应的css。现在我想点击匹配的标题。我该怎么办? 我尝试使用下面的代码从title属性中获取数据,但是给出了空值:

stageListOfFilters = driver.findElements(By.xpath(".//*[@id='DS']")); // This collects the list
                                                                                    // of dates which is
                                                                                    // fetched later on in
                                                                                    // for loop

            for (WebElement element : stageListOfFilters) {
                System.out.println("Dates are: " + element.getAttribute("title"));
            }

2 个答案:

答案 0 :(得分:0)

这可能是一个简单的问题,就像字符串边缘周围的空格一样。最好删除字符串边缘周围的空格,然后比较它。等,

if (finalSnapshot1.toString().trim().equals(stageListOfFilters.get(i).getText().trim())) {

在代码中,

for (int i = 0; i < stageListOfFilters.size(); i++) {
   System.out.println(stageListOfFilters.get(i).getText());

   if (finalSnapshot1.toString().trim().equals(stageListOfFilters.get(i).getText().trim())) {

     driver.findElement(By.xpath(".//*[@id='DS']/div/div/div[1]/div[" + i + "]/div[1]")).click();
     System.out.println("Value of i: " + i);
     Thread.sleep(2000);
   }
 }  

答案 1 :(得分:0)

我无法选择日期列表的正确xpath。我现在解决了它,下面是我的工作代码,它满足了我的期望。

try {
            Date varDate = dateFormat.parse("01-Sep-2017");
            dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 2017-08-18
            finalSnapshot1 = dateFormat.format(varDate).toString();
            System.out.println("Date: " + finalSnapshot1); // Prints 2017-08-18
            driver.findElement(By.xpath(config.getsnapshotFilter())).click();
            Thread.sleep(2000);

            stageListOfFilters = driver
                    .findElements(By.xpath("(//*[@class='QvFrame DS'])[1]/div/div/div[1]/child::div")); // This collects
                                                                                                        // the list
            // of dates which is
            // fetched later on in
            // for loop
            System.out.println("Size" + stageListOfFilters.size());
            Thread.sleep(2000);
            for (int i = 1; i < stageListOfFilters.size(); i++) {

                if (finalSnapshot1.equals(stageListOfFilters.get(i).getText())) {
                    System.out.println("Filters list value: " + stageListOfFilters.get(i).getText());
                    System.out.println("Value to be compared: " + finalSnapshot1);
                    i = i + 1;
                    driver.findElement(By.xpath(".//*[@class='QvFrame DS']/div/div/div[1]/div[" + i + "]/div[1]"))
                            .click();
                    System.out.println("Value of i: " + i +" and Date is: "+ finalSnapshot1.toString());
                }
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }  

感谢大家的帮助。 21天后我终于解决了。哈哈!