本人在学习selenium2java的时候,遇到元素存在但因为被其他元素挡住了,导致无法点击的问题,多方请教后,使用js点击解决了困扰。我又写了几个js点击元素的方法,现在分享出来,供大家参考。
1//通过js点击
2public static void clickByJs(WebDriver driver, WebElement element) {
3JavascriptExecutor js = (JavascriptExecutor) driver;
4js.executeScript("arguments[0].click();", element);
5//第二种点击方法
6// ((JavascriptExecutor) driver).executeScript("arguments[0].click()", question);
7}
下面这个方法在发散一下,写了一些Selenium调用JavaScript的方法封装。
1 //通过js点击
2 public void clickByJs(WebElement element) {
3 JavascriptExecutor js = (JavascriptExecutor) driver;
4 js.executeScript("arguments[0].click();", element);
5 //第二种点击方法
6// ((JavascriptExecutor) driver).executeScript("arguments[0].click()", question);
7 }
8 //通过xpath获取元素用js点击
9 public void clickByJsByXpath(String xpath) {
10 clickByJs(driver.findElement(By.xpath(xpath)));
11 }
12 public void clickByJsByText(String text) {
13 clickByJs(findElementByText(text));
14 }
15 public void clickByJsById(String id) {
16 clickByJs(findElementById(id));
17 }
18 public void clickByJsByClassName(String name) {
19 clickByJs(findElementByClassName(name));
20 }
21 public void clickByJsByName(String name) {
22 clickByJs(findElementByName(name));
23 }
24
25 //滚动到最上方
26 public void scrollToTop() {
27 ((JavascriptExecutor)driver).executeScript("window.scrollTo(0,0);");
28// JavascriptExecutor js = (JavascriptExecutor) driver;
29// js.executeScript("window.scrollTo(0,0);");
30 }
31 //js滚动页面内div
32 public void scrollToBottomById(String id) {
33 JavascriptExecutor js = (JavascriptExecutor) driver;
34 js.executeScript("arguments[0].scrollTo(0, 3000);", findElementById(id));
35 }
36 //使用js使元素隐藏元素显示
37 public void makeDisplayById(String id) {
38 JavascriptExecutor js = (JavascriptExecutor)driver;
39 js.executeScript("document.getElementById(id).style.display='block';");
40 }
41 public void makeElementDisplay(WebElement element) {
42 JavascriptExecutor js = (JavascriptExecutor)driver;
43// WebElement element = driver.findElement(By.xxx);
44 js.executeScript("arguments[0].style=arguments[1]", element, "display: block;");
45 }
46 //js输入文本
47 public void inputTextByJsById(String text, String id) {
48 JavascriptExecutor js = (JavascriptExecutor) driver;
49 js.executeScript("arguments[0].value=\"2016-08-20\"",driver.findElement(By.id(id)));
50 }
51 //js输入文本
52 public void inputTextByJs(String text, WebElement element) {
53 JavascriptExecutor js = (JavascriptExecutor) driver;
54 js.executeScript("arguments[0].value=" + text + "\"", element);
55 }
原文作者:FunTester;如有侵权,请联系管理员删除。