Javascript Selenium Webdriver循环、文件保存和承诺
好吧,我一直在用头撞墙,想弄明白这一点 我正在使用node.js、SeleniumWebDriver和firefox 我想循环浏览URL列表,并将生成的HTML保存到我的文件系统中 我现在设置它的方式是,它将循环遍历所有列表,但在整个例程完成之前不会给我任何输出,我只从数组中的最后一个元素获取数据,但我得到了适当数量的文件 我正在使用的代码逻辑示例如下:Javascript Selenium Webdriver循环、文件保存和承诺,javascript,node.js,loops,selenium-webdriver,promise,Javascript,Node.js,Loops,Selenium Webdriver,Promise,好吧,我一直在用头撞墙,想弄明白这一点 我正在使用node.js、SeleniumWebDriver和firefox 我想循环浏览URL列表,并将生成的HTML保存到我的文件系统中 我现在设置它的方式是,它将循环遍历所有列表,但在整个例程完成之前不会给我任何输出,我只从数组中的最后一个元素获取数据,但我得到了适当数量的文件 我正在使用的代码逻辑示例如下: var urlList = [link1,link2,link3]; var driver = new Builder().forBrowse
var urlList = [link1,link2,link3];
var driver = new Builder().forBrowser('firefox').build();
function loopURL(){
var loopPromises = [];
urlList.forEach(url=>{
loopPromises.push(new Promise((resolve,reject)=>{
resolve(loadAndSaveResults(url))
})
return Promise.all(loopPromises);
}
function loadAndSaveResults(url){
return driver.wait(until.elementLocated(By.linkText(url)))
.then(_=> driver.get(url))
.then(_=> driver.getPageSource())
.then(pageString => driver.wait(writeToFile(pageString))
}
async function writeToFile(pageString){
await fs.writeFileSync(filepath,pageString);
{
driver.get('http://homepage/index.html')
.then(_=> loopURL())
.then(_=> driver.quit());
我遗漏了什么?提示:
urlist.forEach(url=>{loopPromises.push(新承诺((解析,拒绝)=>{resolve(loadAndSaveResults(url))})return Promise.all(loopPromises);
编写return Promise.all(urlist.map(loadAndSaveResults)
:)看,我试过了,不幸的是,它过早地杀死了我的webdriver,在它有机会获取任何数据之前