Kumar
Kumar

Reputation: 61

JavaScript Executor for weblist element using selenium webdriver

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

Answers (3)

Afsar Ali
Afsar Ali

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

Prateek
Prateek

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

Guy
Guy

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

Related Questions