我试图在一个简单的.js脚本中使用最佳语法,该脚本应该使用selenium驱动程序发出http请求。
当我在函数中使用console.log(ret)
时,我可以看到检索到的html代码,但是如果我返回var并尝试console.log(getHTML(url))
,则不会打印。为什么会这样?
下面的代码。注释/取消注释功能内的控制台行以查看其正在打印。
async function getHTML(url){
try{
await driver.get(url);
var ret;
await driver.getPageSource().then(function(data) { ret = data;});
driver.quit();
// console.log(ret);
return ret;
}
catch(err){
handleFailure(err, driver)
}
}
var url = 'http://crossbrowsertesting.github.io/selenium_example_page.html';
console.log(getHTML(url));
如果有人想复制它,则代码的初始部分:
var chrome = require('selenium-webdriver/chrome');
var firefox = require('selenium-webdriver/firefox');
var {Builder, By, Key, until} = require('selenium-webdriver');
var screen = {
width: 640,
height: 480
};
var driver = new Builder()
.forBrowser('chrome')
.setChromeOptions(new chrome.Options().headless().windowSize(screen))
.setFirefoxOptions(new firefox.Options().headless().windowSize(screen))
.build();
function handleFailure(err, driver) {
console.error('Something went wrong!\n', err.stack, '\n');
driver.quit();
}