FAQ Selenium中提示can not connect to the service chromedriver 的解决方法
2024-09-08 17:41:45
can not connect to the service chromedriver问题的处理
背景
一个同学反馈运行如下代码
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://cn.bing.com")
driver.find_element("id","sb_form_q").send_keys("松勤软件测试\n")
sleep(3)
driver.quit()报错了
一看这个错误没见到过,驱动应该是有的,版本也应该对的,无法连接到chromedriver
考虑到chromedriver本身就是一个web server
C:\Users\songqin008>chromedriver
Starting ChromeDriver 103.0.5060.134 (8ec6fce403b3feb0869b0732eda8bd95011d333c-refs/branch-heads/5060@{#1262}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
其实你是可以在浏览器中访问http://127.0.0.1:9515/的,当然这个get并不会返回太多有用的信息,只能说可以看到。
解决
一开始我只想到这里,但不知道如何解决
搜索引擎一查,说是hosts文件可能会影响
查了下这位同学的hosts
少了下面一行
127.0.0.1 localhost
加上后解决
思考
猜猜:代码自动调起chromedriver,并作为webserver访问其api,这个地址可能是127.0.0.1?但没有找到所以报错。
搜索代码发现,报错信息在selenium\webdriver\common\service.py,105行
while True:
self.assert_process_still_running()
if self.is_connectable():
break
count += 1
sleep(0.5)
if count == 60:
raise WebDriverException("Can not connect to the Service %s" % self.path)
30秒超时时间会提示这个,跟实际代码运行效果类似。
那代码self.is_connectable()就应该是不为True的
def is_connectable(self):
return utils.is_connectable(self.port)再看is的定义
def is_connectable(port: int, host: Optional[str] = "localhost") -> bool:
pass #略答案呼之欲出,上面的代码默认值就是localhost
你现在没有这个,自然就不行咯
最新文章
- Yeoman 学习笔记
- Java设计模式之模板模式(Template )
- 【leetcode】Two Sum
- Android开发教程:shape和selector的结合使用
- JSP知识
- jquery中ajax方法返回的三种数据类型:text、json、xml;
- js 字符串转化成数字
- hdu----(4301)Divide Chocolate(状态打表)
- cojs 榴莲 题解报告
- WIN10 搜索功能无法搜索本地应用
- 质因数分解的rho以及miller-rabin
- Java之进程与线程
- BZOJ 2986: Non-Squarefree Numbers [容斥原理 二分]
- 用user-selection实现让页面上的内容不能被选中
- CoordinatorLayout 自定义Behavior并不难,由简到难手把手带你撸三款!
- Optimizing Java笔记:高级垃圾回收
- 论文笔记:Fast(er) RCNN
- Django Form表单组件
- 一些简单的ajax的特点,方法、属性。以及ajax的创建 请求
- JS性能优化 之 文档片段 createDocumentFragment