python - 如何在使用 selenium 截屏之前等待元素完全加载
问题描述
我有一个代码,用于从谷歌下载几张图片,在我通过它的源下载它之前,但它花了很多时间,所以我开始使用 selenium .screenshot_as_base64 因为我的代码已经有一个系统来保存 base64进入图像,问题是,一段时间后,代码运行速度比图像加载快,所以代码开始保存空白图像截图,所以我需要知道是否有办法在元素完全加载之前等待截图。
这是我的帮助代码:
def search(self,keyword,n):
element = self.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="sbtc"]/div/div[2]/input')))
actionChains = ActionChains(self.driver)
actionChains.move_to_element(element).click().perform()
actionChains.move_to_element(element).send_keys(keyword,Keys.RETURN).perform()
element = self.wait.until(
EC.presence_of_element_located((By.XPATH, '//*[@id="islrg"]/div[1]/div[1]/a[1]/div[1]/img')))
actionChains.move_to_element(element).click().perform()
for i in range(n):
element = self.wait.until(
EC.presence_of_element_located((By.XPATH, '//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[2]/div/a/img')))
src = element.screenshot_as_base64
self.download_base(src, keyword)
print(src)
element = self.wait.until(
EC.presence_of_element_located(
(By.XPATH, '//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[1]/a[3]')))
actionChains.move_to_element(element).click().perform()
self.index = 0
self.driver.quit()
解决方案
或许换个思路,获取图片url,直接使用下载工具下载图片。节省了很多麻烦,请参阅示例: 使用 selenium python 下载图像
推荐阅读
- python - Pygame不会在鼠标位置渲染矩形?
- discord.js - Discord.js 反应收集器什么也不做
- assembly - 过早重置堆栈指针?令人困惑的汇编代码
- reactjs - Uncaught (in promise) IntegrationError: Missing value for Stripe(): apiKey 应该是一个字符串。仅在部署到 vercel 但在本地工作正常时
- java - 在 jsp 和 struts 中创建下拉菜单时出错
- deployment - SqlPackage 不部署引用的 DAC 包
- wordpress - 无法以我的自定义格式比较 ACF 字段日期
- javascript - 即使在 React with Firebase Realtime DB 中返回了一个值,为什么我会得到“未定义”?
- php - 将十进制值从 JQuery Ajax 发送到 PHP 会导致不需要的舍入
- python - Ubuntu python 3.7 到 3.8 更新替代方案