質問編集履歴

2

tagの追加

2020/07/17 02:02

投稿

sota1003
sota1003

スコア1

test CHANGED
File without changes
test CHANGED
File without changes

1

本家Puppeteerでの新規ウィンドウ待機について追記

2020/07/17 02:02

投稿

sota1003
sota1003

スコア1

test CHANGED
File without changes
test CHANGED
@@ -134,6 +134,46 @@
134
134
 
135
135
 
136
136
 
137
+ ## (参考)本家Puppeteerでの記述
138
+
139
+ 下記Qiita記事に、Node.jsのPuppeteerでの新規ウィンドウの待機方法が書かれていますが、
140
+
141
+ これをC#で実行するコードが分かりません。
142
+
143
+ [Puppeteerで次ページへの遷移を待つ](https://qiita.com/hnw/items/a07e6b88d95d1656e02f)
144
+
145
+
146
+
147
+ 以下、抜粋。
148
+
149
+ >
150
+
151
+ `<a href="..." target="_blank">` や `window.open()` によるリンクの場合もサブウインドウの場合と考え方は同じですが、遷移後の`Page`を取り出すのに`EventEmitter`が絡んでくるので少し複雑になります。
152
+
153
+ また、この書き方はPuppeteer1.6.0以降が必要です。
154
+
155
+
156
+
157
+ ```javascript
158
+
159
+ const newPagePromise = new Promise(resolve => browser.once('targetcreated',
160
+
161
+ target => resolve(target.page())));
162
+
163
+ await page.click('a');
164
+
165
+ const newPage = await newPagePromise;
166
+
167
+ await newPage.waitForSelector('input[name="foo"]', {visible: true});
168
+
169
+ ```
170
+
171
+ >
172
+
173
+ 注意点として、`target.page()`が呼ばれた直後は新ウインドウが作られていてもページ遷移していない可能性があるので、ページ遷移を`waitForSelector()`やその他の方法で待つ必要があります。
174
+
175
+
176
+
137
177
  ## 環境情報
138
178
 
139
179
  Windows 10 1903