WebDriver中執行JavaScript

來源:互聯網
上載者:User

標籤:exec   elements   基於   指定   對象   oid   script   使用   pac   

首先,我們使用如下方式初始化driver:

1     WebDriver driver = new FirefoxDriver();  2     JavascriptExecutor jse = (JavascriptExecutor)driver; 

 

1.直接傳入JavaScript代碼

可以直接給jse傳入javascript代碼:

1  jse.executeScript("window.document.getElementById(‘jingshou‘).click()";  

 

2.傳入WebElement執行js:

1     WebElement element = driver.findElement(By.id("jingshou"));  2     jse.executeScript("arguments[0].click();", element);  

又或者:

1     jse.executeScript("arguments[0].onclick=function(){alert(‘This is my alert!‘);}", element)  

其中auguments[0]就代表element, 甚至我們可以傳入更多的參數,比如

1     WebElement div = driver.findElemnt(By.id("myDiv"));  2     jse.executeScript("arguments[0].setAttribute(‘style‘, arguments[1])", div, "height: 1000px");  

 通過執行以上代碼,我們指定的DIV就新增(修改)了 style {height: 1000px}的屬性


在WebDriver中可以使用JavaScript,通地使用JavascriptExector對象

首先要通過向下轉型 JavascriptExecutor js = (JavascriptExecutor) driver; 轉為JavascriptExector對象

然後再調用executeScript()方法來執行JS。


例:

1. 開啟Google首頁

2. 通過JS擷取網頁中的title  --- document.title

3. 獲得網頁中連結的數量 ----var links = document.getElementsByTagName(‘A‘); return links.length

具體實現如下

 1     package com.example.tests;   2     import static org.junit.Assert.*;   3     import org.junit.*;   4     import org.openqa.selenium.*;   5     import org.openqa.selenium.ie.InternetExplorerDriver;   6        7     public class test {   8         @Test   9         public void testJavaScriptCalls() {  10             WebDriver driver = new InternetExplorerDriver();  11             driver.get("http://www.google.com.hk");  12             JavascriptExecutor js = (JavascriptExecutor) driver;  13             String title = (String) js.executeScript("return document.title");  14             assertEquals("Google", title);  15             long links = (Long) js.executeScript("var links = "  16                     + "document.getElementsByTagName(‘A‘); "  17                     + "return links.length");  18             assertEquals(32, links);  19             driver.close();  20         }  21     }  

從javaScript代碼中返回資料,我們需要使用return關鍵字。基於傳回值的類型,我們需要對 executeScript()方法進行轉型。對於帶小數點的值,使用Double類型,非小數值可以使用Long類型,布爾值可以使用Boolean類 型,如果返回的是HTML節點,可以使用 WebElement類型,文本值,可以使用String類型。如果返回的是對象列表,基於物件類型的任何值都可以。

 

WebDriver中執行JavaScript

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.