测试人社区

selenium的driver.quit()报错

代码
image
报错信息



http.client.RemoteDisconnected: Remote end closed connection without response

  • quit换成close可以正常运行
  • self.driver.quit()注释可以正常运行
  • python3.8,chrome版本号一致

请教大佬这是什么问题引起的?

image
看下这里是不是格式没对

是不是把time.sleep()去掉可能就好了

这个是因为我下敲字的习惯问题,没有空行。。。,没符合pep8规范。。。

不是的

帮你远程的时候看了,没找到原因,应该是环境的问题

这个报错大多出现在请求或是爬虫的时候UA不正确,就是在请求的时候没有代入当前浏览器信息,服务器不知道你是谁。调用quit的时候其实的层是调用的common.service类中的stop函数,这里的逻辑是启动浏览器时,通过service中的start启动一个服务,在quit退出时通过stop来关闭这个服务,按照流程会进行请求及返回的解析,实际就是发送了一个请求。

第一种你可以尝试将当前浏览器的cookie信息添加到driver中,应该可以避免这类错误。第二种就是上度娘搜一下,直接通过service类来操作进程的开关闭。

之前遇到过没法关进程的情况,但没有遇到过报错,以上仅供参考

哦对了,你的百度地址有问题,把地址改成https://www.baidu.com是不是就好了

有一个细节我没描述清楚,用quit的时候,浏览器确实关闭了,然后按照service的方式开关闭,发现用service的stop同样引起这个报错,网上查到的

然后又找到一个和我类似的报错

按上面好像是ajax请求的问题,用加等待的方式解决了吗?试试第一种方法呢

我本身有用implicitly_wait,然后按照里面说的用WebDriverWait等待,还是同样报错。
用cookie的方式,我在后面学到复用浏览器的时候,就是保存了cookie,但是执行到quit还是报错,有同学用我的代码执行,完全没有问题,这是不是因为我的电脑问题。
然后close也能关闭浏览器或者页面,但是没有理解到这个会不会关闭进程。
用close是不是没问题

那可能确实是环境的问题了,你降2个版本试试

close是关闭当前tab页,如果只有一个tab,那会关闭浏览器,如果有多个tab,就只会关闭当前的tab,这2个不一样

嗯嗯,这个了解的,谢谢