Javascript 使用selenium Nodejs等待异步函数
我正在创建一个小程序,当您使用selenium在google上搜索内容时,返回所有链接标题的名称 代码如下:Javascript 使用selenium Nodejs等待异步函数,javascript,node.js,selenium,selenium-webdriver,Javascript,Node.js,Selenium,Selenium Webdriver,我正在创建一个小程序,当您使用selenium在google上搜索内容时,返回所有链接标题的名称 代码如下: const {Builder,By, Key, until} = require('selenium-webdriver'); driver = new Builder().forBrowser("firefox").build(); var search_query='tigers'; (async()=>{ await driver.get(`htt
const {Builder,By, Key, until} = require('selenium-webdriver');
driver = new Builder().forBrowser("firefox").build();
var search_query='tigers';
(async()=>{
await driver.get(`https://www.google.com/search?q=${search_query}`);
await driver.findElements(By.css('h3')).then((search_results)=>{
for (var i = 0; i < search_results.length; i++)
search_results[i].getText().then((text)=>{console.log(text);})
});
console.log('...Task Complete!')
})();
显然,…任务完成了代码>应在整个功能完成后记录
我不明白我做错了什么我使用了适当的wait
关键字来保持代码的有序流动,是then()
中的错误吗?因为你的。然后(()=>…)
没有返回承诺,开始时的wait
关键字没有任何作用。Node已经开始承诺获取h3,获取它们的文本内容,并记录它们,但是您放错位置的wait
并没有告诉Node等待所有这些完成。您需要等待获取元素,然后同步循环所有元素,等待读取文本,然后同步打印文本,最后同步打印“…任务完成!”
const{Builder,By,Key,until}=require('selenium-webdriver');
const driver=new Builder().forBrowser(“firefox”).build();
const search_query='tigers';
(异步()=>{
等着司机(`https://www.google.com/search?q=${search\u query}`);
const h3Elements=wait driver.findElements(By.css('h3'));
用于(h3元素的常数h3){
const text=wait h3.getText();
console.log(文本);
}
console.log(“…任务完成!”)
})();
如果要减少额外变量,可以这样做:
const{Builder,By,Key,until}=require('selenium-webdriver');
const driver=new Builder().forBrowser(“firefox”).build();
const search_query='tigers';
(异步()=>{
等着司机(`https://www.google.com/search?q=${search\u query}`);
const h3Elements=wait driver.findElements(By.css('h3'));
用于(h3元素的常数h3){
log(等待h3.getText());
}
console.log(“…任务完成!”)
})();
您发送的第一个代码很有效,非常感谢!但是第二个简化变量one不起作用,它在console.log(wait h3.getText())行的参数列表
之后显示SyntaxError:missing)
可能问题在于当(h3)=>
不是异步函数时,在控制台日志中使用Wait
?@cakelover我已经更新了简化变量版本的解决方案,请现在检查它在编译期间没有显示任何错误,但它给出了与问题中所问相同的错误输出是的,因为这不是一个顶级的等待
,它导致了问题。你可以通过Promise.all
和.map
解决这个问题,但这只会把事情搞得一团糟。我已经更新了第二部分,它只是删除了一个不必要的变量(text
),因为它位于wait
...Task Complete!
Tiger - Wikipedia
Top stories
Tigers (2014 film) - Wikipedia
Detroit Tigers (@tigers) · Twitter
Tiger | Species | WWF
Videos
Official Detroit Tigers Website | MLB.com
Tiger | WWF
Tiger - National Geographic Kids
Tiger guide: species facts, how they hunt and where to see in ...
Related searches
Images
Description