Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Selenium Webdriver循环、文件保存和承诺_Javascript_Node.js_Loops_Selenium Webdriver_Promise - Fatal编程技术网

Javascript Selenium Webdriver循环、文件保存和承诺

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

好吧,我一直在用头撞墙,想弄明白这一点

我正在使用node.js、SeleniumWebDriver和firefox

我想循环浏览URL列表,并将生成的HTML保存到我的文件系统中

我现在设置它的方式是,它将循环遍历所有列表,但在整个例程完成之前不会给我任何输出,我只从数组中的最后一个元素获取数据,但我得到了适当数量的文件

我正在使用的代码逻辑示例如下:

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,在它有机会获取任何数据之前