使用硒webdriver开发记录和回放工具
问题描述:
我想开发一个像Selenium IDE一样使用硒webdriver的记录和回放工具。我开始使用Chrome浏览器,尝试了不同的方法。他们几乎在这里:使用硒webdriver开发记录和回放工具
-
尝试创建一个带有事件侦听器的JavaScript并尝试使用JavascriptExecutor执行它。在JS脚本中,我隐含地等待返回一些值。示例代码:
var flag = 0; var elementId; window.addEventListener("click", function (e) { elementTagName=e.target.id; alert(elementTagName); flag++; }); var timer = setInterval(function() { myTimer(); }, 1000); function myTimer() { if(flag == 0){ document.getElementById("demo").innerHTML=flag; } else { clearInterval(timer); return elementId; //Returning the element ID which was clicked } }
但现在的问题是,用Java编写的(如下图所示)webdriver的代码不等待回报。当我单独运行它时,相同的代码正常工作。
Object response = ((JavascriptExecutor) driver).executeScript(script);
if (null != response) {
System.out.println((String) response);
}
其他方式我可以做到吗?
答
代替返回JS值,可以将其存储在一个JS变量,通过改变这一行:
return elementId;
这样:
retVal = elementId;
然后,只要你会访问response
在Java中,执行JS以访问页面上的JS var:
// execute JS functions from your question above
((JavascriptExecutor) driver).executeScript(script);
// wait however long needed for those functions to complete
Thread.sleep(1000);
// get result from page
String response = (String)((JavascriptExecutor) driver).executeScript("return retVal");