const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const firefox = require('selenium-webdriver/firefox');

const { saveFile } = require('./tools/save-file');
const { baseData } = require('./tools/base-data');
const { skuData } = require('./tools/sku-data');
const { videoData } = require('./tools/video-data');
const { imgsData } = require('./tools/imgs-data');
const { downImg } = require('./tools/down-img');


(async function example() {
    // let driver = await new Builder().forBrowser('chrome').build();
    let driver = new webdriver.Builder()
        .forBrowser('chrome')
        .build();

    driver.get('https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-15438998729.159.167f3b511BHh5a&id=617256520600&rn=062ba2e2e6d139709e3e0e3505b56bbe&abbucket=3');

    // 检查登录
    await driver.wait(webdriver.until.elementLocated(webdriver.By.className('j_Username')), 100000, '超时未登录');
    console.log('登陆成功');
    driver.executeScript(function () {
        let y = 0;
        let timer = setInterval(() => {
            y += 50;
            if (y > 20000) {
                clearInterval(timer);
            }
            window.scrollTo(0, y)
        }, 10)
    })
    // 检查基本信息(判断详情加载完成)
    await driver.sleep(20000 / 50 * 10)
    console.log('滚动完成');

    // 判断是否有验证框
    try {
        const dialog = await driver.findElement(webdriver.By.className('baxia-dialog'));
        if (dialog) {
            const ele = await driver.findElement(webdriver.By.js(() => document.querySelector('.baxia-dialog .baxia-dialog-close')))
            ele.click();
        }
        console.log('有验证框');
    } catch (error) {
    }

    // // 延时一秒
    await driver.sleep(1000)

    let data = {};

    // 获取基础详情
    const bData = await baseData(driver);
    data = { ...bData };

    // imgs
    data.imgs = await imgsData(driver);
    // sku
    data.sku = await skuData(driver);
    console.log('开始保存')
    // video TODO: 视频用的blob暂不处理
    // data.video = await videoData(driver);
    saveFile(`test.html`, JSON.stringify(data, null, 4));
    downImg(data)

})();