作者:QJ974 | 来源:互联网 | 2023-06-03 10:38
上一次可用通过JS的return语句,返回变量给selenium代码,那么如果我们要将selenium的变量传递给JS该怎么办?看一下下面的JS代码,意思是alert弹窗显示变量t
上一次可用通过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 }
这里只是例子,不用在实际工作中