2014-09-02 52 views
0

我想開發一個像Selenium IDE一樣使用硒webdriver的記錄和回放工具。我開始使用Chrome瀏覽器,嘗試了不同的方法。他們幾乎在這裏:使用硒webdriver開發記錄和回放工具

  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 
        } 
    } 
    

但現在的問題是,用Java編寫的(如下圖所示)webdriver的代碼不等待回報。當我單獨運行它時,相同的代碼正常工作。

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

其他方式我可以做到嗎?

回答

0

代替返回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");