selenium.common.exceptions.WebDriverException: Message: unkn



如果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."}

但是如果链接改变了,ie尝试从出现正文的链接中截取截图,它会正常工作。

我试图做的是继续没有任何错误。因为当它失败时,脚本会停止。

<<p>解决方案/strong>经过一番研究,我找到了解决办法。CODE(例如site和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")

有一个属性叫做

WebElement.screenshot_as_png

这将返回png作为二进制数据,如果您想将图像存储为文件,您可以使用.screen()方法

WebElement.screenshot("hi.png")

你可以看到所有可用的方法和属性的web元素:

https://www.selenium.dev/selenium/docs/api/py/webdriver_remote/selenium.webdriver.remote.webelement.html

例子:

driver.find_element_by_id("anyid").screenshot_as_png
driver.find_element_by_id("anyid").screenshot("hi.png")

根据错误的截图不工作,因为它的宽度,看看元素是否正确可见之前,你采取的截图

use webdriver wait:

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')))

对于远程web驱动程序没有screenshot_as_png属性,但方法是get_screenshot_as_png(),它将当前窗口的屏幕截图作为二进制数据。

  • 用法:

    driver.get_screenshot_as_png()
    

解决方案本质上get_screenshot_as_png()是一个webdriver方法,你的有效代码块将是:

element_screenshot_png = driver.get_screenshot_as_png()
参考

你可以在下面找到一些相关的详细讨论:

  • 如何使用Selenium WebDriver进行截图?

最新更新