2017-09-18 57 views
0

我想知道爲什麼這段代碼永遠不會解決成功或失敗。JS Selenium findElements不會解決

driver.findElements(By.id(eid)).then(
     function (ret) { 
     console.log("Success"); 
     return !!ret.length; 
     }, function (err) { 
     console.log("Failure"); 
     } 
); 

https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#findElements

https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/lib/webdriver.js#L1049

+0

從代碼中,所有的東西都沒問題。你可以給一個小的但可運行的代碼片段,所以我們可以嘗試在我們這邊。你有沒有嘗試在其他網站上面的代碼? – yong

+0

我不認爲有其他代碼需要測試它。即使找到元素,它也應該始終打印成功或失敗。 – xTomasM

+0

在上面的代碼之前可能發生了一些錯誤嗎?或者嘗試selenium-webdriver的其他版本 – yong

回答

0

我讀的地方,你不應該依賴回調,你應該寧願使用的承諾。

所以在我的情況下,它看起來像:

let ret = driver.findElements(By.id(eid)); 
console.log("Success"); 
return !!ret.length; 

你覺得什麼人?

+0

本文使事情更清晰:http://testerstories.com/2016/03/webdriver-in-javascript-with-promises/ – xTomasM

0

我運行下面的代碼在我的chrome上找到了。我可以'找到h2計數:7'。 我安裝了[email protected]

var webdriver = require('selenium-webdriver'), 
    By = webdriver.By; 

var driver = new webdriver.Builder() 
    .forBrowser('chrome') 
    .usingServer('http://localhost:4444/wd/hub') 
    .build(); 

driver.get('https://www.npmjs.com/package/selenium-webdriver'); 

driver.sleep(5000); 

driver.findElements(By.css('h2')).then(function(eles) { 
    console.log('find h2 count: ' + eles.length); 
    return !!eles.length; 
}, function(err) { 
    console.log('error: ' + err); 
    return err; 
}); 
相關問題