Docker selenium自动化 - 执行程序没反应不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决

少年辛苦终身事,莫向光阴惰寸功。这篇文章主要讲述Docker selenium自动化 - 执行程序没反应不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决相关的知识,希望能为你提供帮助。

docker 运行 selenium 自动化发现根本不向下走了。
访问 Grid 控制台发现提示 ??3 requests waiting for a slot to be free.??
原因是之前执行失败的进程没有正常释放才会出现阻塞的问题。

Docker selenium自动化 - 执行程序没反应不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决

文章图片

查看详细信息可以看到超时时间为 1800 秒,即问题进程卡 30 分钟才会自动释放掉。
Docker selenium自动化 - 执行程序没反应不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决

文章图片

通过 cocker restart + 实例名 来强制释放失败的进程。
Docker selenium自动化 - 执行程序没反应不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决

文章图片

脚本改进方案:
通过 ??try [关键代码] finally [进程释放]?? 的方式可以避免调试过程中的进程不释放问题。
实例如下:

# -*- coding: UTF8 -*-
# 2021.11.16
# 小蓝枣
# docker selenium 自动化

from selenium import webdriver
from time import sleep

driver = webdriver.Remote(
command_executor=http://127.0.0.1:55006/wd/hub,
desired_capabilities={browserName: chrome}
)

try:
# 登录中国气象网查看北京天气
driver.get(http://www.weather.com.cn/weather1d/101010100.shtml)
sleep(3)
# 读取天气信息
bj_temperature = driver.find_element_by_xpath(//*[@class="sk mySkyNull"]//*[@class="tem"]/*).text
bj_wind_direction = driver.find_element_by_xpath(//*[@class="sk mySkyNull"]//*[@class="zs w"]/span).text
bj_wind_class = driver.find_element_by_xpath(//*[@class="sk mySkyNull"]//*[@class="zs w"]/em).text
bj_air_quality = driver.find_element_by_xpath(//*[@class="sk mySkyNull"]//*[@class="zs pol"]//a).text

bj_weather =
城市:北京
当前温度:%s
风向:%s
风力:%s
空气质量:%s
%(bj_temperature,bj_wind_direction,bj_wind_class,bj_air_quality)

# 打印抓取的天气信息
print(bj_weather)

# 保存截图
driver.get_screenshot_as_file("docker_selenium_run_001.png")

# 保证出错后进程正常释放
finally:
driver.quit()


【Docker selenium自动化 - 执行程序没反应不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决】喜欢的点个赞?吧!



    推荐阅读