使用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。
答案 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);
}