Reputation: 52665
I have a Selenium-Python
script that works well with Firefox
and Chrome
, but sometimes raise following exception if to use PhantomJS
:
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.phant
omjs.service.Service object at 0x000000000439FE80>>
Traceback (most recent call last):
File "C:\Python34\Lib\site-packages\selenium\webdriver\common\service.py", line 151, in __del__
self.stop()
File "C:\Python34\Lib\site-packages\selenium\webdriver\common\service.py", line 127, in stop
self.send_remote_shutdown_command()
File "C:\Python34\Lib\site-packages\selenium\webdriver\phantomjs\service.py", line 68, in send_remote_shutdown_command
os.remove(self._cookie_temp_file)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\OB865~1.LUC\\AppData\\Local\\Temp\\tmpe6zrcjem'
The point of script is to loop through list of files: start browser session for each file, send file for analysis, get and save results, close browser. Issue appears while session re-opening (between driver.close()
and driver = webdriverPhantomJS()
) for next iteration in about 50% cases...
Any assumption about what could cause this issue and how it can be fixed?
P.S. Let me know if any additional info required
Upvotes: 2
Views: 1645
Reputation: 3538
One may find this patch to be better:
https://github.com/SeleniumHQ/selenium/commit/e85c59460b7292046f377b405882454c77458b96
based on issue: https://github.com/SeleniumHQ/selenium/issues/1854
Upvotes: 1
Reputation: 52665
As I found out problem is that system tries to remove temporary file created during browser session, but not always successfully.
Solved by changing function in selenium.webdriver.phantomjs.service.py
like follow:
was
def send_remote_shutdown_command(self):
if self._cookie_temp_file:
os.remove(self._cookie_temp_file)
after adding try/except
construction:
def send_remote_shutdown_command(self):
try:
if self._cookie_temp_file:
os.remove(self._cookie_temp_file)
except PermissionError:
pass
This will allow to avoid temporary file remove if webdriver
not able to do so. File is actually empty (0kb), so even big number of such temp files will not harm system
Upvotes: 5