蜜臀久久99精品久久一区二区_激情五月俺来也_丰满少妇熟乱xxxxx视频_黄色国产一级片_少妇放荡的呻吟干柴烈火动漫_久久爱www_亚洲一欧美日b_日韩av动漫_成人在线免费高清视频_日韩码一码二码三码区别69_狠狠撸狠狠操_中文字幕在线导航_欧美在线网_黄色网址中文字幕_午夜xx_国产成人无码专区_亚洲中亚洲中文字幕无线乱码_欧美精品片_欧美一级视频_日韩精品激情

使用puppeteer實現瀏覽器自動化

Puppeteer 是一個 Node 庫,它提供了一個高級 API 來通過 DevTools 協議控制 Chromium 或 Chrome。Puppeteer 默認以 headless 模式運行,但是可以通過修改配置文件運行“有頭”模式。

可以實現手動操作瀏覽器的所有功能

 

生成頁面 PDF。
抓取 SPA(單頁應用)并生成預渲染內容(即“SSR”(服務器端渲染))。
自動提交表單,進行 UI 測試,鍵盤輸入等。
創建一個時時更新的自動化測試環境。 使用最新的 JavaScript 和瀏覽器功能直接在最新版本的Chrome中執行測試。
捕獲網站的 timeline trace,用來幫助分析性能問題。
測試瀏覽器擴展。

 

安裝

安裝有瀏覽器的版本

npm i puppeteer

這個版本自帶Chromium瀏覽器,體積在300多M

2024.1更新

現在默認不會安裝Chromium,如果要安裝,運行上述代碼以后,再運行"node node_modules\puppeteer\install.js",如果提示沒有install.js,則運行"node_modules\puppeteer\install.mjs"

如果電腦有谷歌瀏覽器,可以使用下面代碼

npm i puppeteer-core

 

簡單使用

截圖

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    //設置可視區域大小
    await page.setViewport({width: 1920, height: 800});
    await page.goto('https://youdata.163.com');
    //對整個頁面截圖
    await page.screenshot({
        path: './files/capture.png',  //圖片保存路徑
        type: 'png',
        fullPage: true //邊滾動邊截圖
        // clip: {x: 0, y: 0, width: 1920, height: 800}
    });
    //對頁面某個元素截圖
    let [element] = await page.$x('/html/body/section[4]/div/div[2]');
    await element.screenshot({
        path: './files/element.png'
    });
    await page.close();
    await browser.close();
})();

 

 

 

模擬用戶登錄

(async () => {
    const browser = await puppeteer.launch({
        slowMo: 100,    //放慢速度
        headless: false,
        defaultViewport: {width: 1440, height: 780},
        ignoreHTTPSErrors: false, //忽略 https 報錯
        args: ['--start-fullscreen'] //全屏打開頁面
    });
    const page = await browser.newPage();
    await page.goto('https://demo.youdata.com');
    //輸入賬號密碼
    const uniqueIdElement = await page.$('#uniqueId');
    await uniqueIdElement.type('admin@admin.com', {delay: 20});
    const passwordElement = await page.$('#password', {delay: 20});
    await passwordElement.type('123456');
    //點擊確定按鈕進行登錄
    let okButtonElement = await page.$('#btn-ok');
    //等待頁面跳轉完成,一般點擊某個按鈕需要跳轉時,都需要等待 page.waitForNavigation() 執行完畢才表示跳轉成功
    await Promise.all([
        okButtonElement.click(),
        page.waitForNavigation()  
    ]);
    console.log('admin 登錄成功');
    await page.close();
    await browser.close();
})();

那么 ElementHandle 都提供了哪些操作元素的函數呢?

elementHandle.click():點擊某個元素
elementHandle.tap():模擬手指觸摸點擊
elementHandle.focus():聚焦到某個元素
elementHandle.hover():鼠標 hover 到某個元素上
elementHandle.type('hello'):在輸入框輸入文本

 

請求攔截

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    const blockTypes = new Set(['image', 'media', 'font']);
    await page.setRequestInterception(true); //開啟請求攔截
    page.on('request', request => {
        const type = request.resourceType();
        const shouldBlock = blockTypes.has(type);
        if(shouldBlock){
            //直接阻止請求
            return request.abort();
        }else{
            //對請求重寫
            return request.continue({
                //可以對 url,method,postData,headers 進行覆蓋
                headers: Object.assign({}, request.headers(), {
                    'puppeteer-test': 'true'
                })
            });
        }
    });
    await page.goto('https://demo.youdata.com');
    await page.close();
    await browser.close();
})();

那 page 頁面上都提供了哪些事件呢?

page.on('close') 頁面關閉
page.on('console') console API 被調用
page.on('error') 頁面出錯
page.on('load') 頁面加載完
page.on('request') 收到請求
page.on('requestfailed') 請求失敗
page.on('requestfinished') 請求成功
page.on('response') 收到響應
page.on('workercreated') 創建 webWorker
page.on('workerdestroyed') 銷毀 webWorker

 

獲取 WebSocket 響應

Puppeteer 目前沒有提供原生的用于處理 WebSocket 的 API 接口,但是我們可以通過更底層的 Chrome DevTool Protocol (CDP) 協議獲得

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    //創建 CDP 會話
    let cdpSession = await page.target().createCDPSession();
    //開啟網絡調試,監聽 Chrome DevTools Protocol 中 Network 相關事件
    await cdpSession.send('Network.enable');
    //監聽 webSocketFrameReceived 事件,獲取對應的數據
    cdpSession.on('Network.webSocketFrameReceived', frame => {
        let payloadData = frame.response.payloadData;
        if(payloadData.includes('push:query')){
            //解析payloadData,拿到服務端推送的數據
            let res = JSON.parse(payloadData.match(/\{.*\}/)[0]);
            if(res.code !== 200){
                console.log(`調用websocket接口出錯:code=${res.code},message=${res.message}`);
            }else{
                console.log('獲取到websocket接口數據:', res.result);
            }
        }
    });
    await page.goto('https://netease.youdata.163.com/dash/142161/reportExport?pid=700209493');
    await page.waitForFunction('window.renderdone', {polling: 20});
    await page.close();
    await browser.close();
})();

 

植入 javascript 代碼

Puppeteer 最強大的功能是,你可以在瀏覽器里執行任何你想要運行的 javascript 代碼,下面是我在爬 188 郵箱的收件箱用戶列表時,發現每次打開收件箱再關掉都會多處一個 iframe 來,隨著打開收件箱的增多,iframe 增多到瀏覽器卡到無法運行,所以我在爬蟲代碼里加了刪除無用 iframe 的腳本:

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://webmail.vip.188.com');
    //注冊一個 Node.js 函數,在瀏覽器里運行
    await page.exposeFunction('md5', text =>
        crypto.createHash('md5').update(text).digest('hex')
    );
    //通過 page.evaluate 在瀏覽器里執行刪除無用的 iframe 代碼
    await page.evaluate(async () =>  {
        let iframes = document.getElementsByTagName('iframe');
        for(let i = 3; i <  iframes.length - 1; i++){
            let iframe = iframes[i];
            if(iframe.name.includes("frameBody")){
                iframe.src = 'about:blank';
                try{
                    iframe.contentWindow.document.write('');
                    iframe.contentWindow.document.clear();
                }catch(e){}
                //把iframe從頁面移除
                iframe.parentNode.removeChild(iframe);
            }
        }
        //在頁面中調用 Node.js 環境中的函數
        const myHash = await window.md5('PUPPETEER');
        console.log(`md5 of ${myString} is ${myHash}`);
    });
    await page.close();
    await browser.close();
})();

page.evaluate(pageFunction[, ...args]):在瀏覽器環境中執行函數
page.evaluateHandle(pageFunction[, ...args]):在瀏覽器環境中執行函數,返回 JsHandle 對象
page.$$eval(selector, pageFunction[, ...args]):把 selector 對應的所有元素傳入到函數并在瀏覽器環境執行
page.$eval(selector, pageFunction[, ...args]):把 selector 對應的第一個元素傳入到函數在瀏覽器環境執行
page.evaluateOnNewDocument(pageFunction[, ...args]):創建一個新的 Document 時在瀏覽器環境中執行,會在頁面所有腳本執行之前執行
page.exposeFunction(name, puppeteerFunction):在 window 對象上注冊一個函數,這個函數在 Node 環境中執行,有機會在瀏覽器環境中調用 Node.js 相關函數庫

 

抓取 iframe 中的元素

一個 Frame 包含了一個執行上下文(Execution Context),我們不能跨 Frame 執行函數,一個頁面中可以有多個 Frame,主要是通過 iframe 標簽嵌入的生成的。其中在頁面上的大部分函數其實是 page.mainFrame().xx 的一個簡寫,Frame 是樹狀結構,我們可以通過 frame.childFrames() 遍歷到所有的 Frame,如果想在其它 Frame 中執行函數必須獲取到對應的 Frame 才能進行相應的處理

以下是在登錄 188 郵箱時,其登錄窗口其實是嵌入的一個 iframe,以下代碼時我們在獲取 iframe 并進行登錄

(async () => {
    const browser = await puppeteer.launch({headless: false, slowMo: 50});
    const page = await browser.newPage();
    await page.goto('https://www.188.com');
    //點擊使用密碼登錄
    let passwordLogin = await page.waitForXPath('//*[@id="qcode"]/div/div[2]/a');
    await passwordLogin.click();
    for (const frame of page.mainFrame().childFrames()){
        //根據 url 找到登錄頁面對應的 iframe
        if (frame.url().includes('passport.188.com')){
            await frame.type('.dlemail', 'admin@admin.com');
            await frame.type('.dlpwd', '123456');
            await Promise.all([
                frame.click('#dologin'),
                page.waitForNavigation()
            ]);
            break;
        }
    }
    await page.close();
    await browser.close();
})();

文件的上傳和下載

在自動化測試中,經常會遇到對于文件的上傳和下載的需求,那么在 Puppeteer 中如何實現呢?

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    //通過 CDP 會話設置下載路徑
    const cdp = await page.target().createCDPSession();
    await cdp.send('Page.setDownloadBehavior', {
        behavior: 'allow', //允許所有下載請求
        downloadPath: 'path/to/download'  //設置下載路徑
    });
    //點擊按鈕觸發下載
    await (await page.waitForSelector('#someButton')).click();
    //等待文件出現,輪訓判斷文件是否出現
    await waitForFile('path/to/download/filename');

    //上傳時對應的 inputElement 必須是<input>元素
    let inputElement = await page.waitForXPath('//input[@type="file"]');
    await inputElement.uploadFile('/path/to/file');
    browser.close();
})();

 

 

模擬選擇文件

點擊元素觸發選擇文件框,不會顯示,直接返回選擇文件

    const [fileChooser] = await Promise.all([
        page.waitForFileChooser(),
        page.click('#mydropzone'), // some button that triggers file selection
    ]);
    await fileChooser.accept(['D:\\down\\tmp.zip']);

 

 

跳轉新 tab 頁處理

在點擊一個按鈕跳轉到新的 Tab 頁時會新開一個頁面,這個時候我們如何獲取改頁面對應的 Page 實例呢?可以通過監聽 Browser 上的 targetcreated 事件來實現,表示有新的頁面創建:

let page = await browser.newPage();
await page.goto(url);
let btn = await page.waitForSelector('#btn');
//在點擊按鈕之前,事先定義一個 Promise,用于返回新 tab 的 Page 對象
const newPagePromise = new Promise(res => 
  browser.once('targetcreated', 
    target => res(target.page())
  )
);
await btn.click();
//點擊按鈕后,等待新tab對象
let newPage = await newPagePromise;

 

 

模擬不同的設備

Puppeteer 提供了模擬不同設備的功能,其中 puppeteer.devices 對象上定義很多設備的配置信息,這些配置信息主要包含 viewport 和 userAgent,然后通過函數 page.emulate 實現不同設備的模擬

const puppeteer = require('puppeteer');
const iPhone = puppeteer.devices['iPhone 6'];
puppeteer.launch().then(async browser => {
  const page = await browser.newPage();
  await page.emulate(iPhone);
  await page.goto('https://www.google.com');
  await browser.close();
});

 

其他信息

官方中文文檔

https://zhaoqize.github.io/puppeteer-api-zh_CN/#/

 

THE END
主站蜘蛛池模板: 大陆汽车系统天津有限公司| 通力摩托车有限公司| 河北 灌溉设备有限公司| 广州与生服饰有限公司| 济南万达广场置业有限公司| 广州灯饰有限公司招聘| 水富云天化有限公司| 合保电气(芜湖)有限公司| 高田天津汽配制造有限公司| 哈尔滨龙滨酒业有限公司| 东莞特比斯电子有限公司| 博汇医疗器械有限公司| 北京中药材有限公司| 黑龙江世药业有限公司| 东盛国际贸易有限公司| 天加空调天津有限公司| 深圳市怡宝有限公司| 至信机械制造有限公司| 青岛厨房设备有限公司| 北京新纪元建筑工程设计有限公司 | 杭华宠物用品有限公司| 欧时电子元件有限公司| 江苏南瑞威尔电气有限公司| 港芝东莞电子有限公司| 深圳递四方速递有限公司| 北京京电电力工程设计有限公司 | 苏腾机械设备有限公司| 上海乐居贸易有限公司| 无锡久保田有限公司| 天一牧业 有限公司| 天津锅炉制造有限公司| 深圳市艾龙电子有限公司| 东莞德永佳纺织有限公司| 广东高速公路有限公司电话| 万兴建筑工程有限公司| 一人有限公司 债务| 安徽安粮实业有限公司| 安徽中科机械有限公司| 广州松下电子有限公司| 广州依纯服装有限公司| 山西环境监测有限公司| 泰通(泰州)工业有限公司| 广东亿能电力有限公司| 华能莱芜热电有限公司| 山东省服装有限公司| 专访 有限公司 董事长| 哈尔滨量具有限公司| 三申医疗器械有限公司| 稻田产业贸易有限公司| 精密汽车部件有限公司| 史福特照明有限公司| 嘉兴环保工程有限公司| 隆都兴强食品有限公司| 成都大众园林有限公司| 深圳艺涛装饰工程有限公司| 宁波思味食品有限公司| 万德福实业有限公司| 天津捷通汽车销售有限公司| 上海全景数字技术有限公司| 一汽大众长春汽车有限公司| 鑫创塑胶制品有限公司| 反刍饲料 有限公司| 浙江融创信息有限公司| 上海申通快递有限公司| 中合(大连)置业有限公司| 航宇机械设备有限公司| 郑州恒越电子有限公司| 山东绿爱食品有限公司| 嘉憬家用电器有限公司| 源科光电技术有限公司| 住建(上海)有限公司| 厦门欣贺服饰有限公司| 青岛海润食品有限公司| 绍兴 阀门有限公司| 博威新能源有限公司| 华创智能工程有限公司| 米思米精密机械贸易有限公司| 尼普洛 上海 有限公司| 深圳恒辉达实业有限公司| 山西海鑫钢铁有限公司| 江苏苏变变压器有限公司| 深圳瑞鑫光电有限公司| 青岛tcl家用电器有限公司| 无锡山禾药业有限公司| 商丘电动车有限公司| 武夷山市山袍茶业有限公司| 中科广州化学有限公司 | 东莞市建筑设计院有限公司| 广州健崎电子有限公司| 南京福特汽车有限公司| 方向电子(深圳)有限公司| 济南防雷工程有限公司| 环裕自动化有限公司| 葛洲坝实业有限公司| 奥鹏远程教育中心有限公司| 山东保龄生物有限公司| 金玉装饰工程有限公司| 盛隆兴电子深圳有限公司| 台湾自动化有限公司| 奥凯医疗设备有限公司| 河北中药饮片有限公司| 创辉塑胶模具有限公司| 哈尔滨龙酒酒业有限公司| 山西美锦能源有限公司| 绍兴紧固件有限公司| 福建调味品有限公司| 广州心德实业有限公司| 天成电力工程有限公司| 沃克通用设备有限公司| 中铁建甘肃有限公司| 溯高美索克曼电气有限公司| 深圳宝利制品有限公司| 西藏信息技术有限公司| 金城化学 江苏 有限公司| 郑州钻石精密制造有限公司| 宝沃北京汽车有限公司| 昆信机械制造有限公司| 星光树脂昆山有限公司| 广东东鹏陶瓷有限公司| 大连振邦氟涂料有限公司| 钢钢金属制品有限公司招聘| 福州国控医药有限公司| 鑫鹏达深圳有限公司| 浙江创维自动化工程有限公司 | 青岛新材料有限公司招聘| 台州塑豪塑业有限公司| 开封新材料有限公司| 零距离(上海)有限公司| 黄山生态农业有限公司| 徐州市建设工程监理有限公司| 亿达包装制品有限公司| 业盛不锈钢有限公司| 深圳中海监理有限公司| 宏恒胜电子有限公司| 广州康美药业有限公司| 泰莱贸易(上海)有限公司| 上海思派贸易有限公司| 中合置业有限公司大连| 深圳互联在线有限公司| 和米有限公司怎么样| 致诚建筑设计有限公司| 迪士尼(北京)有限公司| 苏州阿迪达斯有限公司| tcl通讯(宁波)有限公司| 东莞市力嘉有限公司| 上海福耀汽车玻璃有限公司| 合众 佛山 化工有限公司| 芯微技术(深圳)有限公司| 单县电动车有限公司| 扬州广宁医药医药有限公司| 百养堂实业有限公司| 金融租赁有限公司怎么样| 格兰仕家用电器有限公司| 青岛正华信息技术有限公司| 乐清市建设有限公司| 牧东光电(苏州)有限公司| 广州大阳摩托有限公司| 浙江公众信息产业有限公司| 广州胜得电路版有限公司| 上海海骄机电有限公司| 杨家声设计顾问有限公司| 荏原机械(烟台)有限公司| 圣和圣置业有限公司| 有限公司增资股东会决议| 中山市中振有限公司| 万福阁家具昆山有限公司| 恒大美森美实业有限公司| 深圳市伟光电子有限公司| 深圳市欣威电子有限公司| 有限公司 合伙协议| 黄河设计有限公司招聘| 北京永益技术有限公司| 海正药业(杭州)有限公司| 江西创展实业有限公司| 上海金可儿有限公司| 江苏新思维有限公司| 华联石油化工有限公司| 敏华实业(吴江)有限公司| 餐饮策划有限公司官网| 西安电力电器有限公司| 宁波 肖 有限公司| 上海统一超商有限公司| 群泰机械设备有限公司| 江苏新思维有限公司| 创宝达电器制品有限公司| 慈溪 服装有限公司| 广州绿海医疗器械有限公司| 湖北华中药业有限公司| 库博标准昆山有限公司| 邯郸远洋实业有限公司| 文华财经资讯有限公司| 亚马逊贸易有限公司| 法格厨房设备昆山有限公司| 鑫雪制冷设备有限公司| 广州安仪电子有限公司| 泰山机械制造有限公司| 赛维斯(北京)有限公司| 北京天景园林有限公司| 抚顺 实业有限公司招聘| 有限公司最高权力机构| 莱州塑料机械有限公司| 天地飘香酒业有限公司| 深圳先进光学有限公司| 广州以蓝电子实业有限公司| 环宇环保设备有限公司| 武安文安钢铁有限公司| 自动化设备有限公司 英文| 烟台市担保有限公司| 青岛工控设备有限公司| 安徽 建筑设备 有限公司| 泸州康庆坊酒业有限公司| 广德县电子有限公司| 中天石油化工有限公司| 克模模具(苏州)有限公司| 北京全球播有限公司| 深圳市嘉源实业有限公司| 德居装饰工程有限公司| 九州通大药房连锁有限公司| 金戈炜业壁纸有限公司| 泰山机械制造有限公司| 江西长安汽车有限公司| 美商纵横国际货代有限公司| 深圳人防设备有限公司| 金华市政工程有限公司| 包头市光电有限公司| 温州精密铸造有限公司| 五洲国际货运有限公司| 郑州康实业有限公司| 安泰动力机械有限公司| 爱居装饰工程有限公司| 上海 花 有限公司招聘| 陕西延长石油橡胶有限公司 | 佛广公共汽车有限公司| 昆山建筑装工程有限公司| 四川城市建设监理有限公司| 海康威视系统技术有限公司| 沈阳东亿制造有限公司| 延边金刚山食品有限公司| 昆山彩印刷有限公司| 燕华工程建设有限公司| 鸿永利电子有限公司| 银谷普惠北京有限公司| 上海华东建设发展设计有限公司| 上海石田电子有限公司| 吉林正和药业有限公司| 宝石钢管钢绳有限公司| 北京互信互通信息有限公司| 天津电子衡器有限公司| 米高上海汽车配件有限公司 | 东莞五金玩具有限公司| 南通机电设备制造有限公司| sew传动广州有限公司| 华夏建设发展有限公司| 上海园林绿化有限公司地址| 新能凤凰能源有限公司| 河北东华化工有限公司| 东莞鑫展电子有限公司| 宝德包装机械有限公司| 中合置业有限公司大连| 上海屹丰模具制造有限公司| 四川四汇建设有限公司| 纽瑞滋上海有限公司| 泰天装饰工程有限公司| 智恒机电设备有限公司| 北京光华机电有限公司| 惠而浦(深圳)有限公司| 法雷奥发动机冷却佛山有限公司 | 广东集装箱有限公司| 德奥机电设备有限公司| 科隆测量仪器有限公司| 北京云农场有限公司| 深圳彩服装有限公司| 内蒙古君正化工有限公司| 电子净化设备有限公司| 一人有限公司的清算| 原筑建筑设计有限公司| 祥隆装饰工程有限公司| 重庆北汽银翔有限公司| 成都西部石油装备有限公司| 中铁物总贸易有限公司| 宝德新材料有限公司| 杭州星华反光材料有限公司| 广安利医药有限公司| 医药设备制造有限公司| 天时石油机械有限公司| 上海智城分析仪器有限公司| 宁波 管材 有限公司| 美新医疗器械有限公司| 沃川电子苏州有限公司| 北京和上海的发展有限公司| 陕西烽火有限公司招聘| 威森电子(深圳)有限公司| 物资机电有限公司怎么样| 云南蝶泉乳业有限公司| 长沙 责任有限公司| 金融产业发展有限公司| 上海丰艺舍有限公司| 三吉机械制造有限公司| 艾法史密斯 青岛有限公司| 上海住友重机械有限公司| 亿嘉(香港)有限公司| 中美冠科生物技术有限公司| 贺氏苏州特殊材料有限公司| 祥明仪表机箱有限公司| 深圳鸿迈电子有限公司| 深圳亚太国际有限公司| 九江天赐新材料有限公司| 珠海大象磨具有限公司| 成都市燃气有限公司| 华润电力(宜昌)有限公司| 方格信息技术有限公司| 北京中盛担保有限公司| 金博机械制造有限公司| 福建燕京啤酒有限公司| 菲利普斯化工有限公司| 之江贵金属经营有限公司| 世纪名典装饰工程有限公司| 浙江创维自动化工程有限公司| 东唐装饰设计有限公司| 东莞合宝电器有限公司| 汕头华润医药有限公司| 广州第二建筑工程有限公司| 上海彩钢制品有限公司| 金刚石电机苏州有限公司| 上海福耀汽车玻璃有限公司| 杭州星华反光材料有限公司| 焊接机器人有限公司| 中达金属制品有限公司| 菏泽单县 有限公司| 五八信息技术有限公司怎么样 | 创亿达照明有限公司| 东莞泳池设备有限公司| 深圳一帆电子有限公司| 深圳金帝食品有限公司| 信达融资担保有限公司| 超图信息技术有限公司| 江森自控有限公司 成都| 苏州制冷设备工程有限公司| 海诺机械制造有限公司| 川西蓄电池有限公司| 欧姆龙电子深圳有限公司| 九方信息技术有限公司| 华科电子仪器有限公司| 常州科研试制中心有限公司| 江苏川仪仪表有限公司| 广东优果农业有限公司| 嘉吉饲料(南京)有限公司| 山东花生制品有限公司| 承德绿色食品有限公司| 上海和记黄埔地产有限公司| 江苏苏通阀门有限公司| 西安联合汽车电子有限公司| 上海法派服饰有限公司| 浙江新东方紧固件有限公司| 华联汽车零部件有限公司| 泉州英良石材有限公司| 立昂微电子有限公司| 四川蓬莱盐化有限公司| 南京密封技术有限公司| 山东郯城机械有限公司| 杰西博工程有限公司| 苏州丰工业设备有限公司| 金坛正信光伏有限公司| 广州朗域实业有限公司| 新疆神州医药有限公司| 广州园林建设有限公司| 正泰汽车零部件有限公司| 上海尚地技术有限公司| 上海快钱支付清算信息有限公司| 深圳永恒光电有限公司| 佛山市顺德区汽车贸易有限公司| 茂名新能源有限公司| 黄石捷德万达金卡有限公司| 美瓷达陶瓷有限公司| 安阳汽车零部件有限公司| 南京信雅达有限公司| 基伊埃工程技术有限公司| 瀚特信息技术有限公司| 云南一心堂有限公司| 精佳精密模具有限公司| 苏州思腾电子有限公司| 焊接波纹管有限公司| 光明国际电气有限公司| 上海 纤维有限公司招聘| 四川蓝光实业有限公司| 苏州群光电子有限公司| 德利威电子有限公司| 金属复合板有限公司| 世纪天源环保技术有限公司| 深圳聚电电子有限公司| 凯华电器实业有限公司| 深圳市德芯电子有限公司| 华联兴电子有限公司| 广州3m材料有限公司| 捷腾电子(深圳)有限公司| 高要宏润陶瓷有限公司| 佛山市丽家居有限公司| 武汉市担保有限公司| 虹光精密工业苏州有限公司| 广西华天宝药业有限公司| 贝恩医疗设备广州有限公司| 昊天林实业有限公司| 天诚同创电气有限公司| 佑昌照明电器有限公司| 宏桂绿色食品有限公司| 佳铁自动化有限公司| 闼闼同创工贸有限公司| 合肥 胶粘剂有限公司| 讴歌 汽车有限公司| 勤电子(惠州)有限公司| 深圳市捷佳电子有限公司| 深圳市法本信息技术有限公司| 华晨鑫源重庆有限公司| 深圳众信电子有限公司| 嘉里建设(上海)有限公司| 生物干细胞技术有限公司| 尼普洛(上海)有限公司| 南京迅信息技术有限公司| 龙源催化剂有限公司| 深圳市彩显有限公司| 黄鹤楼餐饮有限公司| 中船重工物资有限公司| 泰坦体育用品有限公司| 雄邦压铸(南通)有限公司| 喜来登度假村有限公司| 深圳创成电子有限公司| 常州士林电机有限公司| 东莞市东力有限公司| 山西供水设备有限公司| 天达环保建材有限公司| 亨 包装 机械 有限公司| 江苏晨光液压有限公司| 科锐塑胶工业有限公司| 胜利医疗器械有限公司| 孝义 耐火材料有限公司| 日照环保能源有限公司| 上海电计贸易上海有限公司| 天顺金属制品有限公司| 深圳市美品电子有限公司| 捷家宝电器 深圳 有限公司| 谦杭重锻造有限公司| 深圳市易能电气有限公司| 安徽电缆有限公司招聘| 大华医药化工有限公司| 上海泰银置业有限公司| 上海德麦特电器有限公司| 美家饰家居用品有限公司| 美格智能技术有限公司| 焦作金的食品有限公司| 汽车机械设备有限公司| 上海优盛医疗电子有限公司| 亚能生物技术 深圳 有限公司| 中电联环保工程有限公司| 深圳艾新科有限公司| 深圳宏发贸易有限公司| 杭州重汽销售有限公司| 深圳高登布尔仪表有限公司| 深圳市光世界有限公司| 北京万都汽车部件有限公司| 湖北新生源生物工程有限公司| 苏州信达重工有限公司| 车王电子 宁波 有限公司| 品尊装饰工程有限公司| 苏州佐竹机械有限公司| 友谊班尼路服饰有限公司| 紫薇星实业有限公司| 济南光电子有限公司| 长城换向器有限公司| 从兴技术有限公司待遇| 苏州经创电子有限公司| 山东瑞达生物有限公司| 聚宝电器(深圳)有限公司| 济南天辰机器有限公司| 沃德 天津 传动有限公司| 连云港纸业有限公司| 嘉力达实业有限公司| 深圳大华电器有限公司| 安康市医药有限公司| 吉豹电子(深圳)有限公司| 贵州国宾酒业有限公司| 青岛lg电子有限公司| 龙岩曹溪)有限公司| 浙江石化舟山有限公司| 北京超伺服有限公司| 四川省古蔺郎酒有限公司| 深圳市百泰珠宝首饰有限公司| 深圳市辉鹏达有限公司| 深圳市宝盛电子有限公司| 上海亚联财贷款有限公司| 惠州科时电子有限公司| 马牌轮胎上海有限公司| 上海聚通装潢有限公司| 片仔癀医药有限公司| 蓝月亮有限公司重庆| 尼尔森植焊有限公司| 艾普尔换热器有限公司| 阿普拉 合肥 塑料制品有限公司 | 国电光伏 江苏 有限公司| 山东建科工程有限公司| 浙江咸亨国际通用设备有限公司| 乐堂动漫信息技术有限公司| 东软系统集成有限公司| 吉林一正药业有限公司| 杭州比茵服饰有限公司| 北京中业汽车销售有限公司| 德尔福上海动力推进系统有限公司| 江苏乳胶制品有限公司| 物资机电有限公司怎么样| 金土地种业有限公司| 有限公司和无限的区别| 天津品之翼有限公司| 友盛精密机械有限公司| 杭州杭特日用品有限公司| 盛源无缝钢管有限公司| 三环中化化肥有限公司| 晟日电子(天津)有限公司| 江苏环亚建设工程有限公司| 新山川实业有限公司| 昂纳光通信有限公司| 宜兴市颜料有限公司| 台州厨房设备有限公司| 天宇混凝土有限公司| 北京铁科首钢有限公司| 广州卡啦娃有限公司| 天海美擎信息有限公司| 鲲跃体育用品有限公司| 祥铭自动化设备有限公司| 深圳勤仕照明有限公司| 深圳市源鸿贸易有限公司| 湖南晟通贸易有限公司| 淮安 药房有限公司| 宝德包装机械有限公司| 雅克建筑设计有限公司| 杭州雅莱贸易有限公司| 沈阳绿色食品有限公司| 四川三川置业有限公司| 西安思坦仪器有限公司| 伟易达电子产品 有限公司| 中海集装箱码头有限公司| 天娇红食品有限公司| 富鼎商品经营有限公司| 网展上海有限公司怎么样| 成都医疗发展有限公司| 临沂永安钢瓶有限公司| 特变电工天津变压器有限公司| 江苏苏河实业有限公司| 北京纳博汇有限公司| 苏州中华保险有限公司| 格兰达技术深圳有限公司| 中食成都食品有限公司| 弗兰克贸易有限公司| 一人有限公司 增加股东| 美思化妆品有限公司| 上海基胜工业有限公司| 贝斯特阀门有限公司| 群乔电气成套有限公司| 腾龙信息技术有限公司| 京佳宸弘生物技术有限公司| 广西玉柴机械有限公司| 福州 化纤有限公司| 首都建筑设计有限公司| 伟士体育用品有限公司| 秉信纸业有限公司招聘| 凯特信息技术有限公司| 微芯(香港)电子有限公司| 上海输送机械设备有限公司| 优博防雨服饰有限公司| 苏州江南化纤有限公司| 杭州永的服装有限公司| 爱德万上海有限公司| 成都燃气有限公司招聘| 诺基亚苏州有限公司| 济南万昌包装有限公司| 山东瑞丰机械有限公司| 桃乐丝葡萄酒贸易有限公司 | 上海低温设备有限公司| 东莞高伟光学有限公司| 深圳华友能源技术有限公司| 江苏森达热电有限公司| 威特电梯部件 苏州 有限公司| 上海英联电子有限公司| 江淮轻型汽车有限公司| 上海比尤化工有限公司| 保定 地毯有限公司| 光伏系统工程有限公司| 新聪厨食品有限公司| 常州塑胶地板有限公司| 川杰机械设备有限公司| 太原 仪器仪表有限公司| 亨 包装 机械 有限公司| 泰州中海油有限公司招聘| 侨裕新型建材有限公司| 佛山市健博有限公司| 库柏电气(常州)有限公司| 德朗能电池有限公司| 嘉泽装饰工程有限公司| 喜利达食品有限公司| 洛阳路阳重工机械有限公司| 芯硕半导体有限公司| 思彼思营销有限公司| 宁夏宝马化工有限公司| 蚌埠电力 有限公司| 河北泰钢钢铁有限公司| 唐山 机床 有限公司| 佛山灯港照明有限公司| 开封新材料有限公司| 年利亚电子有限公司| 西迪斯天津电子有限公司| 常州机床销售有限公司| 圳市赢家服饰有限公司| 琢颜化妆品有限公司| 深圳市摩登有限公司| 华拓自动化有限公司| 中汉金属制品有限公司| 一电电池技术有限公司| 鼎轩装饰工程有限公司| 宁波给力汽车部件有限公司| 无锡电动工具有限公司| 深圳市陆地方舟有限公司| 战友旅行社有限公司| 北京凯悦制药有限公司| 北京长城华冠有限公司| 北京天下互联信息有限公司| 新美心食品工业有限公司| 广西铝加工有限公司| 宁波 笑 有限公司| 成都全能保健有限公司| 澳锝林电子有限公司| 凌创电子系统有限公司| 河北大洋食品有限公司| 武汉娅娅服饰有限公司| 开拓汽车电子有限公司| 玉峰粉体材料有限公司| 北京世纪宏源有限公司| 意奔玛(苏州)有限公司| 杰信汽车部件有限公司| 青岛汉唐生物有限公司| 深圳视安通电子有限公司| 泰盟机械制造有限公司| 唐山味源食品有限公司| 英特斯电子有限公司| 东风鸿泰销售有限公司| 深圳富兰电子有限公司| 山东鲁化工程有限公司| 合力车辆盘锦有限公司| 百威国际啤酒有限公司| 科威半导体有限公司| 上汽通用销售有限公司| 通源混凝土有限公司| 苏州丰工业设备有限公司| 上海宏茂电子有限公司| 月盛斋清真食品有限公司| 山东奥坤生物有限公司| 亚度装饰工程有限公司| 上海 镱 有限公司| 北京喷砂设备有限公司| 大唐西市置业有限公司| 爱尚家装饰有限公司| 大森林家居有限公司| 空调 冷气机制造有限公司| 宜春市有限公司 矿| 明星电子(深圳)有限公司| 丰城瑞林稀贵有限公司| 深圳星利电子有限公司| 德国大众汽车有限公司|