无法创建着色器缓存条目:ChromeDriver Chrome和Selenium出现-2错误

时间:2018-12-27 05:21:09

标签: python python-3.x selenium google-chrome selenium-chromedriver

我是python的新手,正在学习硒。我想构建一个简单的代码,根据输入内容自动搜索google.com中的任何内容 我正在按名称访问元素,但出现错误:

  

无法创建着色器缓存条目:-2。

任何人都可以帮助我处理我的代码,并纠正我在这里做错的事情吗?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from time import sleep


driver = webdriver.Chrome()
driver.get('http://www.google.com')

elem = driver.find_element_by_name('q')
time.sleep(5)
elem.clear()
elem.send_keys("Python")
elem.send_keys(Keys.RETURN)

2 个答案:

答案 0 :(得分:1)

此错误消息...

.div
    {
        width: 500px;
        background: lightblue;
        transform: rotate(40deg);
    }

...是从shader_disk_cache.cc

中定义的 Failed to create shader cache entry: -2 函数生成的日志条目

主要问题是 shader缓存代码 删除,除了一个 timestamp元组目录以外的所有内容。

根据Failure to create folder for on-disk shader cache,主要问题是着色器缓存代码将删除除一个时间戳元组目录之外的所有目录。


解决方案

作为解决方案,采取了以下步骤:

  • 将所有缓存条目移动到单个缓存目录中,而是使用时间戳记(将来可能会使用build-id哈希值)和gpu id作为缓存条目sha输入的一部分。
  • 在高速缓存接近其最大大小时删除旧条目。尽管此解决方案使预编译着色器的收集/分发变得有些困难,但并非无法解决。
  • int ShaderDiskCacheEntry::WriteCallback(int rv):将时间戳添加到缓存键中
  

不是使用目录,而是将时间戳散列到缓存键本身中。由于没有更多的时间戳目录,因此不再需要删除其他台面版本的缓存,我们依靠逐出来清理旧的缓存条目。这解决了同时使用disk_cache的多个版本的问题,其中一个删除了属于另一个的目录。

您可以在Failed to create shader cache entry- error while locating an element by its Css selector

中找到相关的讨论

答案 1 :(得分:0)

可能js继续运行,并且您的对象未按时写入,我通过添加睡眠来解决此问题。

那是肮脏的东西,因为我只是从网站上窃取数据,但是正确的解决方法是做一个异步方法并允许它在js继续运行之前完全执行。