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