本人在學習selenium2java的時候,遇到元素存在但由於被其餘元素擋住了,致使沒法點擊的問題,多方請教後,使用js點擊解決了困擾。我又寫了幾個js點擊元素的方法,如今分享出來,供你們參考。java
//經過js點擊 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); }
下面這個方法在發散一下,寫了一些Selenium調用JavaScript的方法封裝。編程
//經過js點擊 public void clickByJs(WebElement element) { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].click();", element); //第二種點擊方法 // ((JavascriptExecutor) driver).executeScript("arguments[0].click()", question); } //經過xpath獲取元素用js點擊 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);"); // JavascriptExecutor js = (JavascriptExecutor) driver; // js.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; // WebElement element = driver.findElement(By.xxx); 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))); } //js輸入文本 public void inputTextByJs(String text, WebElement element) { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].value=" + text + "\"", element); }