selenium+python 去除啟動(dòng)的黑色cmd窗口方法
其實(shí) selenium啟動(dòng)窗口的時(shí)候就是 使用了subprocess.Popen 啟動(dòng)的驅(qū)動(dòng)程序的,只要在啟動(dòng)的時(shí)候加上啟動(dòng)不顯示窗口的參數(shù)即可。
下面魔改開(kāi)始O(∩_∩)O哈哈~
修改代碼 位于 D:\Python35\Lib\site-packages\selenium\webdriver\common\service.py 主要是 Service類的start函數(shù)
def start(self):
"""
Starts the Service.
:Exceptions:
- WebDriverException : Raised either when it can't start the service
or when it can't connect to the service
"""
try:
cmd = [self.path]
cmd.extend(self.command_line_args())
if 'win32' in str(sys.platform).lower(): ### 這里判斷是否是windows平臺(tái)
### 在windows平臺(tái)上就隱藏窗口
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags = subprocess.CREATE_NEW_CONSOLE | subprocess.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = subprocess.SW_HIDE
else:
startupinfo = None
self.process = subprocess.Popen(cmd, env=self.env,
close_fds=platform.system() != 'Windows',
stdout=self.log_file, stderr=self.log_file,startupinfo=startupinfo) ### 啟動(dòng)驅(qū)動(dòng)
self.PID = self.process.pid ### 將cmd窗口的進(jìn)程pid 保留 因?yàn)?窗口被隱藏了 所以在后續(xù)程序中必須考慮主控進(jìn)程結(jié)束的時(shí)候必須結(jié)束掉 驅(qū)動(dòng)cmd窗口進(jìn)程
except TypeError:
raise
except OSError as err:
if err.errno == errno.ENOENT:
raise WebDriverException(
"'%s' executable needs to be in PATH. %s" % (
os.path.basename(self.path), self.start_error_message)
)
elif err.errno == errno.EACCES:
raise WebDriverException(
"'%s' executable may have wrong permissions. %s" % (
os.path.basename(self.path), self.start_error_message)
)
else:
raise
except Exception as e:
raise WebDriverException(
"The executable %s needs to be available in the path. %s\n%s" %
(os.path.basename(self.path), self.start_error_message, str(e)))
count = 0
while True:
self.assert_process_still_running()
if self.is_connectable():
break
count += 1
time.sleep(1)
if count == 30:
raise WebDriverException("Can not connect to the Service %s" % self.path)
注意 在前面先導(dǎo)入 sys包
因?yàn)殡[藏了驅(qū)動(dòng)cmd窗口 所以 結(jié)束程序的時(shí)候 一定要做殺死驅(qū)動(dòng)cmd窗口的動(dòng)作哦 !O(∩_∩)O!!
以上這篇selenium+python 去除啟動(dòng)的黑色cmd窗口方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)TCP探測(cè)目標(biāo)服務(wù)路由軌跡的原理與方法詳解
這篇文章主要介紹了Python實(shí)現(xiàn)TCP探測(cè)目標(biāo)服務(wù)路由軌跡的原理與方法,結(jié)合實(shí)例形式分析了Python TCP探測(cè)目標(biāo)服務(wù)路由軌跡的原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-09-09
python?實(shí)現(xiàn)?mp3Play?音頻播放
這篇文章主要介紹了python?實(shí)現(xiàn)?mp3Play?音頻播放,文章基于python的相關(guān)資料展開(kāi)詳細(xì)內(nèi)容,具有一定的參考價(jià)值需要的小伙伴可以參考一下2022-04-04
python并行設(shè)計(jì)的實(shí)現(xiàn)
python中的并行設(shè)計(jì)可以顯著增強(qiáng)程序處理大量數(shù)據(jù)或復(fù)雜計(jì)算的速度,通過(guò)使用threading、multiprocessing和concurrent.futures等庫(kù),開(kāi)發(fā)者可以有效利用多核CPU的計(jì)算力,下面就來(lái)詳細(xì)的介紹一下2024-09-09
對(duì)于Python中線程問(wèn)題的簡(jiǎn)單講解
這篇文章主要介紹了對(duì)于Python中線程問(wèn)題的簡(jiǎn)單講解,線程一直是Python編程當(dāng)中的熱點(diǎn)問(wèn)題,而本文沒(méi)有涉及GIL線程鎖方面的內(nèi)容,需要的朋友可以參考下2015-04-04
Python流程控制 while循環(huán)實(shí)現(xiàn)解析
這篇文章主要介紹了Python流程控制 while循環(huán)實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Python深度學(xué)習(xí)之實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)
今天帶大家學(xué)習(xí)如何使用Python實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò),這是個(gè)很難的知識(shí)點(diǎn),文中有非常詳細(xì)的介紹,對(duì)小伙伴們很有幫助,需要的朋友可以參考下2021-06-06
Python實(shí)現(xiàn)目錄自動(dòng)清洗
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)目錄自動(dòng)清洗的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11

