2013-07-22 122 views
0

我有一个屏幕,其中包含一组过滤器,当按下特定的键时显示。我需要自动选择这些过滤器。专注于一个元素硒

每个过滤器都有一个Xpath,它指向一个包含文本的html元素。我曾尝试以下:

private List<WebElement> elements; 

public void reloadFilters() { 
    String FilterXPath = this.FILTER_ITEM_XPATH; 
    elements = webDriver.findElements(By.xpath(FilterXPath)); 
} 

然后

public void selectFilter(String filter) { 
    WebElement W; 
    Iterator I = elements.iterator(); 
    if (I.hasNext()) { 
     W = (WebElement)I; 
     if (W.getText().equals(filter)) { 
      new Actions(webDriver).moveToElement(W).perform(); 
     } 
    } 
} 

但我当我运行这段代码,我得到:

java.lang.ClassCastException: java.util.ArrayList$Itr cannot be cast to org.openqa.selenium.WebElement 

我如何能执行此什么建议吗?

回答

1

变化;

W=(WebElement)I; 

W=(WebElement)I.next(); 

还,使用适当的变量名;

public void selectFilter(String filter) { 
    Iterator iter = elements.iterator(); 
    if (iter.hasNext()) { 
     WebElement element = (WebElement)iter.next(); 
     if (element.getText().equals(filter)) 
     { 
      new Actions(webDriver).moveToElement(element).perform(); 
     } 
    } 

} 
+0

这也有助于生成'Iterator'。 –