使用selenium webdriver开发记录和回放工具

时间:2014-09-02 04:46:37

标签: java javascript selenium selenium-webdriver

我正在尝试使用selenium webdriver开发一个记录和回放工具,就像Selenium IDE一样。我开始使用Chrome浏览器,尝试了不同的方法。他们中很少有人在这里:

  1. 尝试使用事件侦听器创建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
        }
    }
    
  2. 但现在问题是,用java编写的webdriver代码(如下所示)不等待返回。当我单独运行时,相同的代码工作正常。

    Object response = ((JavascriptExecutor) driver).executeScript(script);
    if (null != response) {
        System.out.println((String) response);
    }
    

    我可以做任何其他方式吗?

1 个答案:

答案 0 :(得分:0)

您可以通过更改以下行来将其存储在JS变量中,而不是返回JS值:

return elementId;

到此:

retVal = elementId;

然后,只要您在Java中访问response,就执行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");