FAQ Selenium中提示can not connect to the service chromedriver 的解决方法
2023-04-18 14:53:41 时间
背景
-
一个同学反馈运行如下代码
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("松勤软件测试 ")
sleep(3)
driver.quit() -
报错了
-
一看这个错误没见到过,驱动应该是有的,版本也应该对的,无法连接到chromedriver
-
考虑到chromedriver本身就是一个web server
C:Userssongqin008>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?但没有找到所以报错。
-
搜索代码发现,报错信息在seleniumwebdrivercommonservice.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
-
相关文章
- 以数智制造全场景,用友U9cloud成传统ERP升级“收割机”
- 《数字化转型视点》:没有软件智能,企业就无法真正拥抱数字经济
- 人工智能技术助力新冠疫苗研发
- FCC的胜诉为Wi-Fi 6E的大规模升级扫清了道路
- 专家谈丨人工智能技术助力新冠疫苗研发
- 使用云服务的挑战:错误架构意味着僵化和失败
- 我用 5G 网络可以干什么?
- SUSE 发布面向本土化的 Rancher 企业版 2.6
- 云计算价值将进一步释放,迎接“深度用云”时代
- AI项目这些致命错误,你都犯过吗?
- 1个月内3次宕机,5G核心网上公有云靠谱吗?
- 混合云——企业的优秀解决方案?
- 亚马逊云科技和德甲推出两项新“赛况”,提供球队洞察增强球迷体验
- 信通院首批AIOps系统和工具评估,博睿数据获评异常检测模块“全面级”
- 解读:微软Azure中国区容量翻倍释放了哪些信息?
- 自定义 Traefik(本地)插件
- 现代Kubernetes测试的五大挑战
- Ack集群Terway网络场景下的vSwitch扩容
- “美人鱼”机器人登上Nature封面:入水瞬间四肢变脚蹼,首席编辑:按需进化
- 云迁移成功后,企业的六大好处