selenium webdriver - 执行JS(二)

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

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

1 var t= "title";
2 myFunction(t);
3 
4 function myFunction(t)
5 {
6   alert("title:" + t );
7 }

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

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 );}");

完成代码如下@撞树桐:

 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 }

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。