docker 运行 selenium 自动化发现根本不向下走了。
访问 Grid 控制台发现提示 3 requests waiting for a slot to be free.
原因是之前执行失败的进程没有正常释放才会出现阻塞的问题。
查看详细信息可以看到超时时间为 1800 秒,即问题进程卡 30 分钟才会自动释放掉。
通过 cocker restart + 实例名 来强制释放失败的进程。
脚本改进方案:
通过 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()
喜欢的点个赞❤吧!