赞
踩
最近用pyqt5写GUI程序,使用python的selenium库做自动化,发现封装成exe之后,只要驱动浏览器就会弹出一个黑框,然后打印出一行:
DevTools listening on ws://127.0.0.1:52704/devtools/browser/dd0465eb-0fbf-4e...
查了好多资料,有的博主说,直接添加一行这个代码就可以了。
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
先解读上面的代码 :
这里使用add_experimental_option方法添加了一个实验性选项。
具体来说,这个选项是用来排除某些Chrome内置的命令行标志(switches)。
在这个例子中,'enable-logging'被排除了,意味着Selenium将不会输出Chrome浏览器的大量日志信息到控制台,这在某些情况下可以减少输出的杂乱,使程序输出更易于阅读,尤其是在进行调试或运行自动化脚本时。
然而并没有什么卵用!重新封装还是会弹出黑框。
找啊找,终于找到一个博主提供的方法是可行的。
具体方法:
1、找到selenium库的service.py文件
路径根据自己的来!.../Lib/sit-packages/selenium/webdriver/common/service.py的源码
2、查找下面的代码
self.creation_flags = self.popen_kw.pop("creation_flags", 0)
3、改成下面的代码
self.creation_flags = self.popen_kw.pop("creation_flags", 134217728)
creationflags改为一个神秘数字134217728(其实就是0x8000000)
4、保留自己代码中的
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
然后执行封装成exe再试试,就发现没有这个弹窗了。
5、代码再给全一点
- from selenium.webdriver import Chrome
-
- from selenium import webdriver
-
- chrome_options = webdriver.ChromeOptions()
-
- chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
-
- # 生成随机端口号
- random_port = random.randint(1024, 49151)
-
- # 初始化 Chrome Service,并指定端口号
- chrome_service = Service('./... 改成自己的谷歌路径.../chrome.exe', port=random_port)
-
- driver = Chrome(service=chrome_service, options=chrome_options)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。