selenium webdriver - 执行JS(二)

上一次可用通过JS的return语句,返回变量给selenium代码,那么如果我们要将selenium的变量传递给JS该怎么办?

看一下下面的JS代码,意思是alert弹窗显示变量title

selenium webdriver - 执行JS(二)
1 var t= "title";
2 myFunction(t);
3 
4 function myFunction(t)
5 {
6   alert("title:" + t );
7 }
selenium webdriver - 执行JS(二)

那么我们在selenium中的代码执行这条语句

1 JavascriptExecutor js = (JavascriptExecutor)driver;
2 js.executeScript("var t= \"title\";"
3                 +"myFunction(t);"
4                 +"function myFunction(t){"
5                 +"alert(\"Welcome \" + t );}");

这里注意,JS中的双引号,需要转义字符,并将各个语句拆分开来,这样显示清晰一些。

下面我们将红色标记的title,替换为java变量

selenium webdriver - 执行JS(二)
1         JavascriptExecutor js = (JavascriptExecutor)driver;
2         String title = (String) js.executeScript("return document.title");
3         
4         js.executeScript("var t= \""
5                 //将title替换为"+title+"
6                 +title+"\";"
7                 +"myFunction(t);"
8                 +"function myFunction(t){"
9                 +"alert(\"Welcome \" + t );}");
selenium webdriver - 执行JS(二)

完成代码如下@撞树桐:

selenium webdriver - 执行JS(二)
 1 import org.openqa.selenium.Alert;
 2 import org.openqa.selenium.WebDriver;
 3 import org.openqa.selenium.firefox.FirefoxDriver;
 4 import org.openqa.selenium.JavascriptExecutor;
 5 
 6 
 7 public class JavaScript3 {
 8   
 9     public static void main(String[] args) throws InterruptedException {
10         WebDriver driver = new FirefoxDriver();
11         driver.get("http://www.baidu.com/");
12         JavascriptExecutor js = (JavascriptExecutor)driver;
13         String title = (String) js.executeScript("return document.title");
14         
15 //        js.executeScript("var t= \"title\";"
16 //                +"myFunction(t);"
17 //                +"function myFunction(t){"
18 //                +"alert(\"Welcome \" + t );}");
19         //将title替换为"+title+"
20         js.executeScript("var t= \""
21                 +title+"\";"
22                 +"myFunction(t);"
23                 +"function myFunction(t){"
24                 +"alert(\"Welcome \" + t );}");
25         
26         Thread.sleep(5000);
27         
28         //这里需要先关闭alert弹窗,在关闭driver,否则会出错
29         //获取alert窗口
30         Alert alertBox = driver.switchTo().alert();
31         //确定
32         alertBox.accept();
33         driver.close();
34     }
35 }
selenium webdriver - 执行JS(二)

这里只是例子,不用在实际工作中

selenium webdriver - 执行JS(二)

上一篇:JQuery缓冲加载图片插件lazyload.js的使用方法


下一篇:HTML5 脚本