Linux selenium运行出错Message: element not interactable (Session info: headless chrome=89.0.4389.90)

在mac电脑上调好了UI自动化的脚本后,迁移到liunx机器上,跑不起来

opt = Options()
opt.add_argument("--headless=new")
opt.add_argument("--use-fake-ui-for-media-stream")
opt.add_argument("--use-fake-device-for-media-stream")
opt.add_argument("--allow-permissions")
opt.add_argument("--allow-file-access-from-files")
opt.add_argument("--autoplay-policy=no-user-gesture-required")
opt.add_argument('--no-sandbox')
opt.add_argument('--disable-gpu')
opt.add_argument('--disable-dev-shm-usage')
opt.add_argument(f"--use-file-for-fake-video-capture=/Users/aa/media/1.y4m")

driver = webdriver.Chrome(options=opt, executable_path=path)

liunx结果
在这里插入图片描述

看起来是没有元素,把无头去掉

opt = Options()
opt.add_argument("--use-fake-ui-for-media-stream")
opt.add_argument("--use-fake-device-for-media-stream")
opt.add_argument("--allow-permissions")
opt.add_argument("--allow-file-access-from-files")
opt.add_argument("--autoplay-policy=no-user-gesture-required")
opt.add_argument('--no-sandbox')
opt.add_argument('--disable-gpu')
opt.add_argument('--disable-dev-shm-usage')
opt.add_argument(f"--use-file-for-fake-video-capture=/Users/aa/media/1.y4m") 

driver = webdriver.Chrome(options=opt, executable_path=path)

然后无法打开浏览器
Linux selenium运行出错Message: element not interactable (Session info: headless chrome=89.0.4389.90)_第1张图片
百度到一个是chrome和driver版本不匹配,于是查看当前版本,很明显是一致的
在这里插入图片描述
继续查,调整opt的顺序,怎么样都不对,一直都是Message: element not interactable (Session info: headless chrome=89.0.4389.90)
偶然看到一个帖子,表示因为分辨率不一致所以找不到,fine ,设置一下分辨率

opt = Options()
opt.add_argument("--use-fake-ui-for-media-stream")
opt.add_argument("--use-fake-device-for-media-stream")
opt.add_argument("--allow-permissions")
opt.add_argument("--allow-file-access-from-files")
opt.add_argument("--autoplay-policy=no-user-gesture-required")
opt.add_argument('--no-sandbox')
opt.add_argument('--disable-gpu')
opt.add_argument('--disable-dev-shm-usage')
opt.add_argument(f"--use-file-for-fake-video-capture=/Users/aa/media/1.y4m")
opt.add_argument('window-size=1920x1080')

driver = webdriver.Chrome(options=opt, executable_path=path)

成功跑起来了,牛的,参考:https://blog.csdn.net/qq_38463737/article/details/109267594

opt.add_argument('--headless') #浏览器不提供可视化页面. 即指定为无头模式,linux下如果系统不支持可视化不加这条会启动失败
opt.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
opt.add_argument('--no-sandbox')#解决DevToolsActivePort文件不存在的报错
opt.add_argument('window-size=1920x1080') #指定浏览器分辨率
opt.add_argument("--proxy-server=http://119.117.24.185:8943")  # 代理	
opt.add_argument('--hide-scrollbars') #隐藏滚动条, 应对一些特殊页面
opt.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
opt.add_argument('–start-maximized') #浏览器最大化
opt.add_argument('–user-agent=""') # 设置请求头的User-Agent
opt.add_argument('–disable-infobars') # 禁用浏览器正在被自动化程序控制的提示
opt.add_argument('–incognito') # 隐身模式(无痕模式)
opt.add_argument('–disable-javascript') # 禁用javascript
opt.add_argument('–ignore-certificate-errors') # 禁用扩展插件并实现窗口最大化
opt.add_experimental_option('excludeSwitches', ['enable-automation'])# 模拟真正浏览器
opt.add_argument("--use-fake-ui-for-media-stream")
opt.add_argument("--use-fake-device-for-media-stream")
opt.add_argument("--allow-permissions")
opt.add_argument("--allow-file-access-from-files")
opt.add_argument("--autoplay-policy=no-user-gesture-required")
opt.add_argument(f"--use-file-for-fake-video-capture=/Users/aa/media/1.y4m")   #这个是你是y4m格式的文件,可以再这下载:https://media.xiph.org/video/derf/

你可能感兴趣的:(chrome,linux,selenium)