selenium.common.exceptions.WebDriverException: Message: unknown error: unhandled inspector error using screenshot_as_png in Selenium Python
selenium.common.exceptions.WebDriverException: Message: unknown error: unhandled inspector error using screenshot_as_png in Selenium Python
它为存在但未出现在网站界面中的 CSS 给出此错误。
我的代码(站点和 css 是示例):
driver.get("www.example.com")
element = driver.find_element_by_css_selector("css").screenshot_as_png
错误:
selenium.common.exceptions.WebDriverException: Message: unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot take screenshot with 0 width."}
但如果 link 发生变化,即尝试从出现尸体的 link 截取屏幕截图,它会正常工作。
我试图做的是继续没有任何错误。因为当它失败时,脚本会停止。
解决方案
经过一番研究,我找到了解决方案。
代码(站点和 css 是示例):
driver.get("www.example.com")
try:
WebDriverWait(driver, 0).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "css")))
element = driver.find_element_by_css_selector("css").screenshot_as_png
print ("element visible")
except TimeoutException:
print ("element not visible")
remote webdriver but the method is get_screenshot_as_png() 没有 screenshot_as_png
的属性,它获取当前 window 的屏幕截图作为二进制数据。
用法:
driver.get_screenshot_as_png()
解决方案
本质上 get_screenshot_as_png()
是一个 webdriver 方法,您的有效代码块将是:
element_screenshot_png = driver.get_screenshot_as_png()
参考
您可以在以下位置找到一些相关的详细讨论:
- How can I take a screenshot with Selenium WebDriver?
有个属性叫
WebElement.screenshot_as_png
这个returns png作为二进制数据,如果你想把图像存储为文件你可以使用.screenshot()方法
WebElement.screenshot("hi.png")
您可以在 :
查看 webelement 的所有可用方法和属性
示例:
driver.find_element_by_id("anyid").screenshot_as_png
driver.find_element_by_id("anyid").screenshot("hi.png")
根据屏幕截图因宽度而无法正常工作的错误,请在截屏之前查看该元素是否正确可见
使用 webdriver 等待:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(browser, 10)
elem= wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'somelocator')))
它为存在但未出现在网站界面中的 CSS 给出此错误。
我的代码(站点和 css 是示例):
driver.get("www.example.com")
element = driver.find_element_by_css_selector("css").screenshot_as_png
错误:
selenium.common.exceptions.WebDriverException: Message: unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot take screenshot with 0 width."}
但如果 link 发生变化,即尝试从出现尸体的 link 截取屏幕截图,它会正常工作。
我试图做的是继续没有任何错误。因为当它失败时,脚本会停止。
解决方案
经过一番研究,我找到了解决方案。 代码(站点和 css 是示例):
driver.get("www.example.com")
try:
WebDriverWait(driver, 0).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "css")))
element = driver.find_element_by_css_selector("css").screenshot_as_png
print ("element visible")
except TimeoutException:
print ("element not visible")
remote webdriver but the method is get_screenshot_as_png() 没有 screenshot_as_png
的属性,它获取当前 window 的屏幕截图作为二进制数据。
用法:
driver.get_screenshot_as_png()
解决方案
本质上 get_screenshot_as_png()
是一个 webdriver 方法,您的有效代码块将是:
element_screenshot_png = driver.get_screenshot_as_png()
参考
您可以在以下位置找到一些相关的详细讨论:
- How can I take a screenshot with Selenium WebDriver?
有个属性叫
WebElement.screenshot_as_png
这个returns png作为二进制数据,如果你想把图像存储为文件你可以使用.screenshot()方法
WebElement.screenshot("hi.png")
您可以在 :
查看 webelement 的所有可用方法和属性示例:
driver.find_element_by_id("anyid").screenshot_as_png
driver.find_element_by_id("anyid").screenshot("hi.png")
根据屏幕截图因宽度而无法正常工作的错误,请在截屏之前查看该元素是否正确可见
使用 webdriver 等待:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(browser, 10)
elem= wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'somelocator')))