转:selenium webdriver 执行javascript代码
2024-07-11 04:10:26 226人阅读
在用selenium webdriver 编写web页面的自动化测试代码时,可能需要执行一些javascript代码,selenium本身就支持执行js,我们在代码中import org.openqa.selenium.JavascriptExecutor;
就可以使用executeScript
、executeAsyncScript
这两个方法了,其中executeScript
是同步方法,用它执行js代码会阻塞主线程执行,直到js代码执行完毕;executeAsyncScript
方法是异步方法,它不会阻塞主线程执行。
executeScript方法如果有返回值,有以下几种情况:
- 如果返回一个页面元素(document element), 这个方法就会返回一个WebElement
- 如果返回浮点数字,这个方法就返回一个double类型的数字
- 返回非浮点数字,方法返回Long类型数字
- 返回boolean类型,方法返回Boolean类型
- 如果返回一个数组,方法会返回一个List<Object>
- 其他情况,返回一个字符串
- 如果没有返回值,此方法就会返回null
executeScript例子:
01 | import java.util.concurrent.TimeUnit; |
03 | import org.openqa.selenium.By; |
04 | import org.openqa.selenium.JavascriptExecutor; |
05 | import org.openqa.selenium.WebDriver; |
08 | * @author youthflies yeetrack.com |
09 | * Mytest.java 2013-5-19 |
14 | public static void main(String[] args) throws InterruptedException |
17 | WebDriver driver = new FirefoxDriver(); |
20 | driver.get( "http://www.baidu.com" ); |
24 | ((JavascriptExecutor)driver).executeScript( "document.getElementById(\"kw\").value=http://www.mamicode.com/"yeetrack\"" ); |
26 | String keyword = (String) ((JavascriptExecutor)driver).executeScript( "var input = document.getElementById(\"kw\").value;return input" ); |
27 | System.out.println(keyword); |
28 | driver.findElement(By.id( "su" )).click(); |
29 | TimeUnit.SECONDS.sleep( 5 ); |
executeAsyncScript
是异步地执行js,可以用来发送ajax请求,详细参见官方文档:http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/JavascriptExecutor.htmlhttp://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/remote/RemoteWebDriver.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。