首页 > 解决方案 > WebDriverException:未处理的检查器错误,代码为“-3200”

问题描述

我目前正在开发一个应用程序(python/django/redis)来跟踪和记录农场谷物的移动。

我的主应用程序运行良好,我现在正试图让我的最后一页正常工作。

该页面的目标是让用户在可以访问网络的情况下将其加载到他的三星标签上,然后去现场收集一些数据,这些数据会在 localStorage 中注册。

完成后,他返回网络并按下加载按钮。当按下按钮时,它会发送一个 post 请求,告诉视图它需要从 localStorage 收集数据并将其放入 Redis 键中。

这是视图的代码:

def creationField(request):
    if request.method == 'POST':
        driver = webdriver.Chrome() 
        url='XXX.X.X.XX:XXXX/XXXXXXX/XXXXXXX'
        driver.get(url)
        storage = LocalStorage(driver)

        for i in range(1,50) :
            keyCubage = 'Wagon_'+ str(i) + '_cubageWagon'
            keyLimite = 'Wagon_'+ str(i) + '_limiteWagon'
            keyCiterne = 'Wagon_'+ str(i) + '_numCiterne'
            keyPBM = 'Wagon_'+ str(i) + '_pbmWagon'
            keyTar = 'Wagon_'+ str(i) + '_tarWagon'

            cubageWagon = storage.get(keyCubage)
            limiteWagon = storage.get(keyLimite)
            numCiterne = storage.get(keyCiterne)
            pbmWagon = storage.get(keyPBM)
            tarWagon = storage.get(keyTar)

            if (cubageWagon == None or limiteWagon == None or numCiterne == None or pbmWagon == None or tarWagon == None):
                result = "Break"
                break
            else:
                result = "REDIS WORK"
                r = redis.StrictRedis(host=settings.REDIS_AD, port=settings.REDIS_PORT, db='14')
                key = 'Wagon_' + str(i)
                r.hmset(key, {'Cubage': cubageWagon, 'limite': limiteWagon, 'numCiterne': numCiterne, 'pbmWagon': pbmWagon, 'tarWagon': tarWagon})
    return render(request, 'creationField.html', locals())

本地存储类:

class LocalStorage:

    def __init__(self, driver) :
        self.driver = driver

    def __len__(self):
        return self.driver.execute_script("return window.localStorage.length;")

    def items(self) :
        return self.driver.execute_script( \
            "var ls = window.localStorage, items = {}; " \
            "for (var i = 0, k; i < ls.length; ++i) " \
            "  items[k = ls.key(i)] = ls.getItem(k); " \
            "return items; ")

    def keys(self) :
        return self.driver.execute_script( \
            "var ls = window.localStorage, keys = []; " \
            "for (var i = 0; i < ls.length; ++i) " \
            "  keys[i] = ls.key(i); " \
            "return keys; ")

    def get(self, key):
        return self.driver.execute_script("return window.localStorage.getItem(arguments[0]);", key)

    def set(self, key, value):
        self.driver.execute_script("window.localStorage.setItem(arguments[0], arguments[1]);", key, value)

    def has(self, key):
        return key in self.keys()

    def remove(self, key):
        self.driver.execute_script("window.localStorage.removeItem(arguments[0]);", key)

    def clear(self):
        self.driver.execute_script("window.localStorage.clear();")

    def __getitem__(self, key) :
        value = self.get(key)
        if value is None :
          raise KeyError(key)
        return value

    def __setitem__(self, key, value):
        self.set(key, value)

    def __contains__(self, key):
        return key in self.keys()

    def __iter__(self):
        return self.items().__iter__()

    def __repr__(self):
        return self.items().__str__()

我很肯定本地存储不是问题,我可以从我尝试过的一些 js 中写入/读取。

我目前的问题是,当我按下加载按钮并发送帖子时,我的页面崩溃并出现以下错误:

Message: unknown error : unhandled inspector error:{"Code":"-32000", "message","Cannot navigate to invalid URL"}

如果我复制粘贴似乎对他无效的 url,它会毫无问题地加载,所以我不确定是什么使 url 对他无效?

标签: pythonselenium-webdriverwebdriver

解决方案


如果你说你的 url 是有效的并且你得到一个无效的 URL 消息试试这个:尝试将 url 存储到字符串文字中(由 r' 标记)

url = r'url_path_goes_here'

推荐阅读