Reputation: 61
This code for an element to click using JavaScript Executor
((JavascriptExecutor) driver).executeScript("arguments[0].click()", driver.findElement(By.linkText("Update")));
But I am creating List<WebElement>
for an element
List<WebElement> text = driver.findElements(By.className("btnstyle greenbtn"));
text.get(1).click();
Is possible JavaScript Executor for web list element to click according to index value.
Upvotes: 1
Views: 5244
Reputation: 605
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);
}
Upvotes: 0
Reputation: 1145
Yes it is possible:
Easiest way is to make a function and pass your element:
public void clickJS(WebElement we) {
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", we);
}
Pass your web element like clickJS(text.get(1))
.
OR you can use it directly:
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));
OR like:
JavascriptExecutor executor = (JavascriptExecutor) driver;
for(WebElement we:text){
executor.executeScript("arguments[0].click();", we);
}
That being said, Using Javascript is NOT a great option, if you want to replicate exact human actions.
Upvotes: 1
Reputation: 50819
Just replace driver.findElement(By.linkText("Update"))
with text.get(1)
List<WebElement> text = driver.findElements(By.className("btnstyle greenbtn"));
((JavascriptExecutor) driver).executeScript("arguments[0].click()", text.get(1));
arguments[0]
is receiving the WebElement
you insert as parameter to the executeScript
method.
Upvotes: 0