py selenium问题解决办法:DevTools listening on ws://127.0.0.1:52704/devtools/browser/

最近用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)

猜你喜欢

转载自blog.csdn.net/u012917925/article/details/139142566