页面打开5秒后,js动态加载一个iframe到页面
时间: 2024-02-13 15:00:28 浏览: 82
如果页面打开5秒后,会动态加载一个 iframe 到页面,可以使用 pyppeteer 的 `page.waitFor()` 方法等待5秒钟,然后再使用 `page.frames()` 方法获取所有的 iframe,找到需要的 iframe 进行操作。
具体代码如下:
```python
# 等待5秒钟
await page.waitFor(5000)
# 获取所有的 iframe
frames = page.frames
# 遍历所有的 iframe,找到需要的 iframe
for frame in frames:
if frame.name == 'myFrame':
# 在需要的 iframe 中进行操作
await frame.waitForSelector('#target')
target = await frame.evaluate('document.querySelector("#target")')
# ...
break
```
在上面的代码中,我们使用 `page.waitFor()` 方法等待了5秒钟,然后使用 `page.frames()` 方法获取到所有的 iframe,在遍历所有的 iframe 中找到需要的 iframe,然后在需要的 iframe 中进行操作。
需要注意的是,如果动态加载的 iframe 在5秒后还没有加载完成,那么上面的代码可能会出现错误。为了避免这种情况,可以使用 `page.waitForSelector()` 方法等待 iframe 加载完成,然后再使用 `page.frames()` 方法获取到 iframe。例如:
```python
# 等待 iframe 加载完成
await page.waitForSelector('iframe[name="myFrame"]')
# 获取 iframe
frame = page.frames[0]
# 在 iframe 中进行操作
await frame.waitForSelector('#target')
target = await frame.evaluate('document.querySelector("#target")')
# ...
```
在上面的代码中,我们使用 `page.waitForSelector()` 方法等待 iframe 加载完成,然后使用 `page.frames()` 方法获取到 iframe,然后在 iframe 中进行操作。
阅读全文