使用selenium webdriver的weblist元素的JavaScript Executor

时间:2016-02-24 12:50:14

标签: selenium-webdriver

使用JavaScript Executor点击元素的代码

((JavascriptExecutor) driver).executeScript("arguments[0].click()", driver.findElement(By.linkText("Update")));

但我正在为元素

创建List<WebElement>
List<WebElement> text = driver.findElements(By.className("btnstyle greenbtn"));
text.get(1).click();

可以根据索引值单击用于web列表元素的JavaScript Executor。

3 个答案:

答案 0 :(得分:1)

是的,有可能:

最简单的方法是创建一个函数并传递你的元素:

public void clickJS(WebElement we) {
    JavascriptExecutor executor = (JavascriptExecutor) driver;
    executor.executeScript("arguments[0].click();", we);
}

传递您的网络元素,例如clickJS(text.get(1))

或者您可以直接使用它:

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", text.get(0));
executor.executeScript("arguments[0].click();", text.get(1));
executor.executeScript("arguments[0].click();", text.get(2));

或者喜欢:

JavascriptExecutor executor = (JavascriptExecutor) driver;
for(WebElement we:text){
executor.executeScript("arguments[0].click();", we);
}

话虽如此,如果你想复制精确的人类行为,使用 Javascript不是一个很好的选择,

答案 1 :(得分:0)

只需将driver.findElement(By.linkText("Update"))替换为text.get(1)

即可
List<WebElement> text = driver.findElements(By.className("btnstyle greenbtn"));
((JavascriptExecutor) driver).executeScript("arguments[0].click()", text.get(1));

arguments[0]正在接收您作为WebElement方法的参数插入的executeScript

答案 2 :(得分:0)

You could write something like this :
WebElement we=driver.findelement(By.xpath("write your xpath of list element .."));

public void clickJS(WebElement we) {
    JavascriptExecutor executor = (JavascriptExecutor) driver;
    executor.executeScript("arguments[0].click();", we);
}