我现在正在自动化一个Web应用程序。我使用了一个列表数组来查找容器中的几个对象。我需要做的是我必须将鼠标悬停到第一个元素并单击相同的元素。但是鼠标悬停方法我在另一个类中编写了常用函数。所以我可以使用list数组的对象以任何方式传递给鼠标悬停方法。?
查找容器中的元素。
By by = By.xpath("//ul[@id='sortable']");
List<WebElement> featureList= element.findElements(by.tagName("a"));
//Mouse-hover method
public static void moveMouseOver(WebDriver driver, By locator) {
WebElement element = waitForElementPresent(driver, locator);
(new Actions(driver)).moveToElement(element).build().perform();
}
Here can I change the 'By Locator' argument to replace with List array object ?
答案 0 :(得分:2)
您可以尝试将moveMouseOver更改为:
public static void moveMouseOver(WebDriver driver, WebElement... webElements){
if(null != webElements){
for(WebElement webEl : webElements){
// do something here
}
}
}
然后将其称为
moveMouseOver(driver, ((WebElement[])featureList.toArray()))
请检查是否有语法错误,因为我只在此处写了这个,而没有在IDE中检查
答案 1 :(得分:1)
您可以将方法更改为:
public static void moveMouseOver(WebDriver driver, By locator, String...action) {
List<WebElement> lstElements = driver.findElements(locator);
for (WebElement webelement : lstElements){
if (action.length > 0 && action.equalsIgnoreCase("click"))
(new Actions(driver)).moveToElement(element).click().build().perform();
else
(new Actions(driver)).moveToElement(element).build().perform();
}
在这种情况下,它也适用于单个元素和多个元素,并且您不会被要求在以前的场景中更改使用情况,尽管您将来需要处理不同的情况,因为这个只处理点击。