Selenium系列之--05 执行JavaScript

使用selenium做自动化测试,有时需要执行一些JavaScript代码。在selenium中有Javascript类可以执行。 
import org.openqa.selenium.JavascriptExecutor; 
其中有两个方法我们会经常遇到。 
executeScript、executeAsyncScript

method 详情
executeScript 同步方法,用它执行js代码会阻塞主线程执行,直到js代码执行完毕;
executeAsyncScript 异步方法,它不会阻塞主线程执行。

1. 初始化driver

通过向下转型 JavascriptExecutor js = (JavascriptExecutor) driver; 将driver转为JavascriptExector对象

然后再调用executeScript()方法来执行JS

JavascriptExecutor jse = (JavascriptExecutor)driver;  

2.直接传入Javascript代码

可以直接给jse传入javascript代码:

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

3.传入WebElement执行JS

//
WebElement element = driver.findElement(By.id("jingshou")); jse.executeScript("arguments[0].click();", element); // inputbox is a WebElement JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].value=\"北京\"", from_inpox);

// 我们指定的DIV就新增(修改)了 style {height: 1000px}的属性
WebElement div = driver.findElemnt(By.id("myDiv"));  
jse.executeScript("arguments[0].setAttribute('style', arguments[1])", div, "height: 1000px");  

4. 滚动到指定位置

小技巧: 如何滚动到定位的元素,使用java script

// scroll to mylink
JavascriptExecutor scroll = (JavascriptExecutor) driver;
scroll.executeScript("arguments[0].scrollIntoView();", myLink);

  JavascriptExecutor js=(JavascriptExecutor)driver;
  // roll down and keep the element to the center of browser
  js.executeScript("arguments[0].scrollIntoViewIfNeeded(true);", download);

<!-- window.scrollTo(左边距,上边距); -->
scroll.executeScript("window.scrollTo(100,450);");

//x为水平移动的像素、y为垂直移动像素、location为元素位置 
//操作滚动条 
1. 垂直滚动

String scroll = "document.documentElement.scrollTop=" + "y"; 
JavascriptExecutor js=(JavascriptExecutor) driver; 
js.executeScript(scroll);

2 .水平滚动

String scroll = "document.documentElement.scrollLeft=" + "x"; 
JavascriptExecutor js=(JavascriptExecutor) driver; 
js.executeScript(scroll);

3. 滚动条式

String scroll = "document.getElementById("location").scrollLeft=x";
JavascriptExecutor js=(JavascriptExecutor)driver; 
js.executeScript(scroll);

猜你喜欢

转载自www.cnblogs.com/liuyitan/p/9272740.html
今日推荐