我需要确保每次在Node.js中执行Selenium脚本时,每次会话都是受信任的浏览器(如果服务器不信任该浏览器,它将在MFA中使用SMS重置,我想避免这种情况)。 在Puppeteer中,它很简单:
const browser = await puppeteer.launch({headless: false,
userDataDir: "./user_data"});
因此,我很愿意与puppeteer呆在一起,但是我在页面上有一个下拉选择器,只能通过名称或xpath以及页面和页面访问。select需要CSS选择器:-(。
所以我搬回了Selenium,但是这里有这个持久性问题:
在会议结束时,我有:
var allCokies = await driver.manage().getCookies(); fs.writeFile("/Users/matnikr/Documents/scrap/selenium/cookies.json",JSON.stringify(allCokies), function(err){
if (err) {return console.log(err)}
console.log('file saved');})
这是我的开始:
driver = await new Builder().forBrowser('chrome').build();
var allCokies = JSON.parse(fs.readFileSync("/Users/matnikr/Documents/angular\ code/Aliorscrap/selenium/cookies.json","utf8"));
for (var key in allCokies){
await driver.manage().addCookie(allCokies[key])
}
await driver.get('https:*******/do/Login');
每当感觉到“隐身”会话开始时。浏览器不受信任。任何帮助表示赞赏。
答案 0 :(得分:0)
您是否尝试过与Puppeteer做相同的事情?我的意思是加载配置文件。因为这实际上就是您通过提供"./user_data"
作为userDataDir
值所做的。
const { Builder } = require('selenium-webdriver');
const { Options } = require('selenium-webdriver/chrome');
function buildChromeDriver() {
const options = new Options();
options.addArguments('user-data-dir=./user_data');
return new Builder()
.forBrowser('chrome')
.setChromeOptions(options)
.build();
}
您始终可以通过在浏览器中打开chrome:// version来验证加载的配置文件:
driver.get('chrome://version');