selenium 执行js代码

时间:2022-03-27 11:30:32

获取一个input输入框的值:

 JavascriptExecutor js =(JavascriptExecutor) driver;
merchatName=js.executeScript("return arguments[0].value", m1.byId("subMerName")).toString();

在selenium里面也提供了执行js代码的方法:

Object executeScript(String script, Object... args);

Object executeAsyncScript(String script, Object... args)

1、executeScript方法接收两个参数和一个返回值:

script,javascript代码片段,这段js代码片段是作为js函数的完整方法体,可以使用return语句作为函数的返回值。
args, 参数数组,参数数组用于将外部数据传递给script(js代码片段),script中可以通过arguments[index]方式索引args数组中的参数;参数数据类型必须是以下几种(number, boolean, String, WebElement, 或者以上数据类型的List集合),当然无参数可以保留为空。
 返回值,返回值是由js代码片段计算后通过return语句返回,返回值数据类型可以为(WebElement,Double,Long,Boolean,String,List或Map),没有return语句,这里返回数据为null。

2、executeAsyncScript方法接收两个参数和一个返回值:

script,javascript代码片段,这段js代码片段是作为js函数的完整方法体,与executeScript主要有两点不同:
 a、此处的script必须在代码结束时明确调用callback方法以通知webdriver该script执行结束;该callback方法是由webdriver注入到arguments数组中最后一个元素;可以通过arguments[arguments.length-1]获取到,且可以使用该回调函数返回计算结果(只需要将放回结果作为回调函数的参数即可);

b、该script执行会有超时时间,默认为60s,超时时间内未调用callback方法,JavascriptExecutor会抛出Timeout异常。
 args, 规则同executeScript。 返回值,规则同executeScript

转载自: https://blog.csdn.net/a578133380/article/details/80262681