JavaScript可以与Selenium 2通话吗?

前端之家收集整理的这篇文章主要介绍了JavaScript可以与Selenium 2通话吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道我可以得到Selenium 2的webdriver来运行 JavaScript并获得返回值,但异步的东西正在发生,我希望JavaScript与Selenium交谈,而不是相反.我做了一些搜索,没有找到这样的东西.人们一般使用implicitly_wait吗?这似乎可能会失败,因为不可能时间一切?完美的例子是让Selenium知道什么时候XHR完成或异步动画与不确定的执行时间.

这可能吗?我们在Saucelabs上使用Selenium 2和Python.

解决方法

您应该查看execute_async_script()方法(Java中的JavaScriptExecutor.executeAsyncScript,.NET中的IJavaScriptExecutor.ExecuteAsyncScript()),它允许您等待回调函数.回调函数自动附加到JavaScript函数中的arguments数组中.所以,假设你的页面上已经有一个JavaScript函数等待,直到你想要的条件,你可以做一些类似以下(Java代码下面,C#和Python代码应该是类似的):
String script = "var callback = arguments[arguments.length - 1];"
    + "callback(myJavaScriptFunctionThatWaitsUntilReady());";

driver.manage().timeouts().setScriptTimeout(15,TimeUnit.SECONDS);
((JavascriptExecutor)driver).executeAsyncScript(script);

可能会更加聪明,并将回调函数直接传递给返回正确数据的事件.您可以在项目JavaDocs中找到有关executeAsyncScript()函数的更多信息,并可以在项目源代码树中找到示例代码.在this file的测试中,等待XHR完成的一个很好的例子.

如果在SauceLabs可用的Python绑定版本中尚不可用,我希望它很久以前可用.诚然,从某种意义上说,这是将您的测试用例中的“所需状态投票”推送到JavaScript中,但这将使您的测试更易读.

原文链接:https://www.f2er.com/js/152069.html

猜你在找的JavaScript相关文章