【发布时间】:2015-09-21 09:56:20
【问题描述】:
我对 Selenium 和 JavaScript 回调函数还很陌生,我有一个无法自己解决的大问题。我需要一个使用 JavaScript 的指定变量。如果我使用 GoogleChrome 打开页面并使用控制台输入我的 JavaScript 代码,我可以使用以下方式获取变量:
1. var myId;
2. getSomeIdStuffInfo("somestuff",function(docId)(myId = docId));
3. return myId;
如果我一步一步输入这行,我很容易得到正确的值 myId。但是,当然,如果我尽可能快地执行这三行,我会得到 null 作为返回值,因为当我返回 myId 时回调函数还没有完成。 SOOOO .. 如果我像这样使用硒:
JavascriptExecutor js = (JavascriptExecutor) driver;
String docInfoVal = (String) js.executeScript("" +
"var myId; " +
"getCurrentDocumentInfo(\"somestuff\"," +
"function(docId) {" +
"myId = docId;" +
"}" +
");" +
"return myId;");
我只得到 null 作为结果。所以......不知何故,我必须“等待”回调函数,直到我返回 myId。我是否必须使用 executeAsyncScript 以及如何使用?我坐在上面几个小时,尝试了不同的东西,但我就是找不到答案。
提前感谢您的帮助!
【问题讨论】:
标签: javascript function selenium asynchronous callback