我想检查传递的值是否与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 链接。
您可以在下面看到快照日期过滤器列表以及与之对应的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"));
}
答案 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天后我终于解决了。哈哈!