puppeteerでテストコードを記載しています
2018/04/26の時点はv1.3です
puppeteerとは
qiita.com
サブウィンドウとは
JavaScript/ウィンドウ/サブウィンドウを開く(クリック時) - TAG index
レガシーなシステムなのでサブウィンドウを使って選択させるような仕組みが多々あります
サブウィンドウを開いた時に
ブラウザのtargetcreatedイベントが発生するので
そちらでサブウィンドウの動作を記述するのですが
サブウィンドウから親ウィンドウに戻ることができないです
サブウィンドウを開いた時の処理
//ブラウザのタブが開くと実行される所 browser.on('targetcreated', async (target) => { console.log(`Created target type ${target.type()} url ${target.url()}`); if (target.url() == subwindowurl){ var page2 = await target.page(); var inputElement2 = await page2.$('body > center > form > table > tbody > tr > td:nth-child(4) > input[type="button"]'); await inputElement2.click(); page2.close(); return; } else if (target.type() !== 'page') { return; } else { var page = await target.page(); } });
サブウィンドウを閉じた時の処理
//ブラウザのタブ閉じられる時のイベント browser.on('targetdestroyed', async (target) => { console.log(`targetdestroyed target type ${target.type()} url ${target.url()}`); if (target.url() == subwindowurl){ console.log('testtargetdestroyed'); pages = await browser.pages(); pages.forEach(function (pageobj) { if (pageobj.url() == parrentURL){ console.log(pageobj.url() ); //ここが動かない // var inputElement2 = await pageobj.$('body > center > form > table > tbody > tr > td:nth-child(4) > input[type="button"]'); // await pageobj.click(); } }); return; } else if (target.type() !== 'page') { return; } else { return; } });
ここでハマるわけにはいかないので
時間をまって逃げた
await inputElement.click(); // console.log("popup start"); await page.waitFor(4000); console.log("popupがたぶん終了しているので作成開始" ); var inputElement = await page.$('body > center > form > table > tbody > tr:nth-child(7) > th > input[type="button"]:nth-child(1)'); await inputElement.click(); console.log("作成終了" );
あああ・・・イケてない
東方プロジェクト1?/ 8?7色のThe Puppeteer Alice Margatroid (通常Ver。)Complete Figure
- 出版社/メーカー: Griffon Enterprise
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る