临时测试

const puppeteer = require('puppeteer');
function sleep(ms) {
	return new Promise(resolve => setTimeout(resolve, ms));
}

(async () => {
	//const browser = await puppeteer.launch();

	const browser = await puppeteer.launch({
		headless: true //设置成false 会触发浏览器打开,完整的看到机器人工作的过程。
	});

	global.page = await browser.newPage();
	global.page.setDefaultNavigationTimeout(9980000);
	await global.page.goto('https://ads.tiktok.com/i18n/contact');
	await global.page.setViewport({
		width: 1280,
		height: 2200
	});
	await sleep(1000);

	await global.page.screenshot({ path: '1.png', fullpage: true });
	// await browser.close();

	console.log("打开首页");

	let searchInput = await global.page.$(".vi-input__inner");
	let selects = await global.page.$$("ul.vi-scrollbar__view > li:last-child");

	let searchInputs = await global.page.$$(".vi-input__inner");
	for (const i in searchInputs) {
		//console.log("2", item);

		console.log("开始输入");
		console.log(typeof i);
		await searchInputs[i].focus(); //定位到搜索框
		switch (parseInt(i)) {
			case 0:
			case 1:
			case 3:
			case 7: {
				console.log(i);
				await global.page.keyboard.type(i);
			} break;

			case 2: {
				console.log(i);
				await global.page.keyboard.type('405659098@qq.com');
			} break;

			case 4: {
				console.log(i);
				// await global.page.keyboard.type('Antarctica');
				// await global.page.waitFor('.vi-icon-arrow-up');//等待下拉框出现
				// await global.page.click('.vi-icon-arrow-up');//展开下拉框
				await searchInputs[i].click();
				await global.page.waitFor(2000);
				// await global.page.waitFor('ul.vi-scrollbar__view > li:nth-child(2)');//等待选项出现
				// await global.page.waitFor(2000);
				// await global.page.click('ul.vi-scrollbar__view > li:nth-child(2)');//点击选项桃子
				await selects[0].click()
			} break;

			case 5: {
				console.log(i);
				// await global.page.keyboard.type('Antarctica');
				// await global.page.waitFor('.vi-icon-arrow-up');//等待下拉框出现
				// await global.page.click('.vi-icon-arrow-up');//展开下拉框
				await searchInputs[i].click();
				await global.page.waitFor(2000);
				// await global.page.waitFor('ul.vi-scrollbar__view > li:nth-child(2)');//等待选项出现
				// await global.page.waitFor(2000);
				// await global.page.click('ul.vi-scrollbar__view > li:nth-child(2)');//点击选项桃子
				await selects[1].click()
			} break;

			case 6: {
				console.log(i);
				// await global.page.keyboard.type('Antarctica');
				// await global.page.waitFor('.vi-icon-arrow-up');//等待下拉框出现
				// await global.page.click('.vi-icon-arrow-up');//展开下拉框
				await searchInputs[i].click();
				await global.page.waitFor(2000);
				// await global.page.waitFor('ul.vi-scrollbar__view > li:nth-child(2)');//等待选项出现
				// await global.page.waitFor(2000);
				// await global.page.click('ul.vi-scrollbar__view > li:nth-child(2)');//点击选项桃子
				await selects[2].click()
			} break;
		}

		await global.page.screenshot({ path: i + '.png' });
	}

	//引入
	var fs = require('fs');
	var readline = require('readline');
	const { exit } = require('process');

	//调用方法
	global.path = './mail.txt';
	global.mail = []
	// read_file(path, function (data) {
	// 	global.mail = data;
	//  const searchBtn = await global.page.$(".home-collection-button");
	// 	await searchBtn.click();
	// 	await global.page.screenshot({ path: 'submit1.png' });
	// 	await global.page.waitFor(2000);
	// 	await global.page.screenshot({ path: 'submit2.png' });
	// 	await browser.close();
	// 	console.log(global.mail)
	// });
	// console.log(global.mail)

	let demo = async function (code) {
		let data = await readfileAsync(path);
		console.log(data);
		console.log(code);
		global.mail = data;
		const searchBtn = await global.page.$(".home-collection-button");
		await searchBtn.click();
		await global.page.screenshot({ path: 'submit1.png' });
		await global.page.waitFor(2000);
		await global.page.screenshot({ path: 'submit2.png' });
		await browser.close();
		console.log(data);
	}

	function readfileAsync(path) {
		return new Promise((resolve, reject) => {
			//定义读取方法
			read_file(path, function (data) {
				resolve(data)
			});
		})
	}

	function read_file(path, callback) {
		var fRead = fs.createReadStream(path);
		var objReadline = readline.createInterface({
			input: fRead
		});
		var arr = new Array();
		objReadline.on('line', function (line) {
			console.log(line)
			arr.push(line);
		});
		objReadline.on('close', function () {
			callback(arr);
		});
	}

	var Imap = require('imap')
	var MailParser = require("mailparser").MailParser
	var fs = require("fs")
	// 引入cheerio模块
	const cheerio = require('cheerio')
	global.code = ''
	global.user = '405659098@qq.com'

	var imap = new Imap({
		user: global.user, //你的邮箱账号
		password: 'shjiketfxrsocabh', //你的邮箱密码
		host: 'imap.qq.com', //邮箱服务器的主机地址
		port: 993, //邮箱服务器的端口地址
		tls: true, //使用安全传输协议
		connTimeout: 60000,
		tlsOptions: { rejectUnauthorized: false } //禁用对证书有效性的检查
	});

	function openInbox(cb) {
		imap.openBox('INBOX', true, cb);
	}

	imap.once('ready', function () {

		openInbox(function (err, box) {

			console.log("打开邮箱")

			if (err) throw err;

			imap.search(['UNSEEN', ['SINCE', 'May 20, 2018']], function (err, results) { //搜寻2017-05-20以后未读的邮件

				if (err) throw err;

				var f = imap.fetch(results, { bodies: '' }); //抓取邮件(默认情况下邮件服务器的邮件是未读状态)

				f.on('message', function (msg, seqno) {

					var mailparser = new MailParser();

					msg.on('body', function (stream, info) {

						stream.pipe(mailparser); //将为解析的数据流pipe到mailparser

						//邮件头内容
						// mailparser.on("headers", function(headers) {
						//     if (headers.get('subject') === 'TikTok for Business Verification Code') {
						//         console.log("邮件头信息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
						//         console.log("邮件主题: " + headers.get('subject'));
						//         console.log("发件人: " + headers.get('from').text);
						//         // console.log("收件人: " + headers.get('to').text);
						//     }
						// });
						// console.log(mailparserSubject)

						// 邮件内容
						mailparser.on("data", function (data) {
							if (data.type === 'text') { //邮件正文
								console.log("邮件内容信息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
								//console.log("邮件内容: " + data.html);

								// 加载HTML字符串
								const $ = cheerio.load(data.html)

								if ($('title') && $('title').text() && $('title').text() === 'TikTok Ads') {
									// console.log($.html())
									// console.log($('table.templateContainer').html())
									// console.log($('table.templateContainer tbody').html())
									let code = $('table.templateContainer tbody').find('tr').eq(6).text()
									code = code.replace(/\ +/g, "");
									code = code.replace(/[\r\n]/g, "");
									global.code = code
									console.log(code);
									// $('table.templateContainer tbody').find('tr').each(function(i, elem) {
									//     console.log(i)
									//         //console.log(elem)
									// })
								}
							}

							// if (data.type === 'attachment') { //附件
							//     console.log("邮件附件信息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
							//     console.log("附件名称:" + data.filename); //打印附件的名称
							//     data.content.pipe(fs.createWriteStream(data.filename)); //保存附件到当前目录下
							//     data.release();
							// }
						});


					});
					msg.once('end', function () {
						console.log(seqno + '完成');
					});
				});
				f.once('error', function (err) {
					console.log('抓取出现错误: ' + err);
				});
				f.once('end', function () {
					console.log('所有邮件抓取完成!');
					imap.end();
				});
			});
		});
	});

	imap.once('error', function (err) {
		console.log('连接邮箱', err);
		demo('123123');
	});

	imap.once('end', function () {
		var fs = require("fs");
		// fs.writeFile('./mail.txt', global.user + ':' + global.code + "\r\n", { flag: 'a', encoding: 'utf-8', mode: '0666' }, function (err) {
		// 	if (err) {
		// 		console.log("文件写入失败")
		// 	} else {
		// 		console.log("文件写入成功");

		// 	}

		// })
		console.log('关闭邮箱', global.user, global.code);
		demo('123123');
	});

	imap.connect();
})();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值