I am making an PyQt4 application where I need to use selenium. Everything works fine while development but when I exported to single file EXE, by pyinstaller and without console , it produces following traceback error:
[WinError6] The handle is invalid
This doesn't happen when I export it when console = True
(in pyinstaller spec file), The error is produced only without console .
The error produced is in the following line:
driver = webdriver.Chrome(executable_path="chromedriver.exe")
My Specs:
Python : 3.4
Architecture : 64bit
Selenium : 3.6.0
Pyinstaller : 3.3
OS : Windows 10
I googled about 1 hour but couldn't find any solution :(
After a lot of research, I found a solution for the above problem.
What you just need to do is edit the file:
C:\\Python34\\Lib\\site-packages\\selenium\\webdriver\\common\\service.py
Change the following line:
self.process = subprocess.Popen(cmd, env=self.env,
close_fds=platform.system() != 'Windows',
stdout=self.log_file, stderr=self.log_file)
to:
self.process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False, creationflags=0x08000000)
This will work even while development and also after deploying to EXE.
Might be a selenium bug.
I found out that pyinstaller doesn't create a copy of chromedriver.exe in the dist folder. Copying chromedriver.exe file to there solved the problem for me.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.