相关文章推荐
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。 WebDriver提供了方法来同步/异步执行JavaScript代码,这是因为JavaScript可以完成一些WebDriver本身所不能完成的功能,从而让WebDriver更加灵活和强大。   本文中所提到的都是JAVA代码。 1. 在WebDriver中如何执行JavaScript代码 JavaScript代码总是以字符串的形式传递给WebDriver,不管你的JavaScript代码是一行还是多行,WebDriver都可以用executeScript方法来执行字符串中包含的所有JavaScript代码。   WebDriver driver = new FirefoxDriver();   JavascriptExecutor driver_js=(JavascriptExecutor)driver;   String js = "alert(\"Hello World!\");";   driver_js.executeScript( js); 2.同步执行JavaScript和异步执行JavaScript的区别 同步执行:driver_js.executeScript( js)   如果JavaScript代码的执行时间较短,可以选择同步执行,因为Webdriver会等待同步执行的结果,然后再运行其它的代码。   异步执行:driver_js.executeAsyncScript(js)   如果JavaScript代码的执行时间较长,可以选择异步执行,因为Webdriver不会等待其执行结果,而是直接执行下面的代码。 3. 用Javascript实现等待页面加载的功能 public void waitForPageLoad() {   While(driver_js.executeScript("return document.readyState" ).equals ("complete")){   Thread.sleep(500);   这样做的缺点是,没有设定timeout时间,如果页面加载一直不能完成的话,那么代码也会一直等待。当然你也可以为while循环设定循环次数,或者直接采用下面的代码: return ((JavascriptExecutor) driver).executeScript("returndocument.readyState").equals("complete"); public voidwaitForPageLoad() { WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(isPageLoaded());
 
推荐文章