Java Selenium JavaScript Click Utility Methods
This article shares a collection of Java Selenium utility methods that use JavaScript to click hidden or obstructed elements, scroll pages, and manipulate element visibility, providing ready-to-use code snippets for web automation challenges.
When learning Selenium with Java, the author encountered elements that exist but cannot be clicked because they are covered by other elements; using JavaScript click solved the issue.
public static void clickByJs(WebDriver driver, WebElement element) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", element);
//第二种点击方法
// ((JavascriptExecutor) driver).executeScript("arguments[0].click()", question);
}Below is an expanded set of Selenium helper methods that wrap JavaScript calls for various actions such as clicking by XPath, text, id, class name, scrolling to the top or bottom of a page, making elements visible, and inputting text.
public void clickByJs(WebElement element) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", element);
//第二种点击方法
// ((JavascriptExecutor) driver).executeScript("arguments[0].click()", question);
}
public void clickByJsByXpath(String xpath) {
clickByJs(driver.findElement(By.xpath(xpath)));
}
public void clickByJsByText(String text) {
clickByJs(findElementByText(text));
}
public void clickByJsById(String id) {
clickByJs(findElementById(id));
}
public void clickByJsByClassName(String name) {
clickByJs(findElementByClassName(name));
}
public void clickByJsByName(String name) {
clickByJs(findElementByName(name));
}
//滚动到最上方
public void scrollToTop() {
((JavascriptExecutor)driver).executeScript("window.scrollTo(0,0);");
}
//js滚动页面内div
public void scrollToBottomById(String id) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollTo(0, 3000);", findElementById(id));
}
//使用js使元素隐藏元素显示
public void makeDisplayById(String id) {
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById(id).style.display='block';");
}
public void makeElementDisplay(WebElement element) {
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].style=arguments[1]", element, "display: block;");
}
//js输入文本
public void inputTextByJsById(String text, String id) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].value=\"2016-08-20\"",driver.findElement(By.id(id)));
}
public void inputTextByJs(String text, WebElement element) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].value=" + text + "\"", element);
}The article also lists links to previous selected articles covering various programming and testing topics.
FunTester
10k followers, 1k articles | completely useless
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.