首页 > Web开发 > 详细

selenium webdriver - 执行JS(二)

时间:2014-02-18 08:01:55      阅读:402      评论:0      收藏:0      [点我收藏+]

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

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

bubuko.com,布布扣
1 var t= "title";
2 myFunction(t);
3 
4 function myFunction(t)
5 {
6   alert("title:" + t );
7 }
bubuko.com,布布扣

那么我们在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变量

bubuko.com,布布扣
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 );}");
bubuko.com,布布扣

完成代码如下@撞树桐:

bubuko.com,布布扣
 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 }
bubuko.com,布布扣

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

selenium webdriver - 执行JS(二)

原文:http://www.cnblogs.com/xiaot87/p/3552845.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!