Webdriver + PhantomJS просто висит там

Я использую Selenium Webdriver (на Python), чтобы автоматизировать загрузку тысяч файлов с определенного веб-сайта (которые нельзя использовать с помощью обычных средств, таких как urllib, httplib и т. Д.). Мой скрипт отлично работает с Firefox, но мне не нужно видеть, как происходит магия, поэтому я пытаюсь использовать PhantomJS. Он работает почти полностью вниз, за ​​исключением случаев, когда он пытается щелкнуть определенную кнопку, чтобы закрыть окно. Вот команда, при которой скрипт застревает:

browser.find_element_by_css_selector("img[alt=\"Close Window\"]").click() 

Он просто висит там, ничего не происходит.

PhantomJS работает быстрее, чем Firefox (так как нет визуальных эффектов), поэтому я подумал, что проблема может быть связана с кнопкой «Закрыть окно», которую невозможно скопировать. Поэтому я попытался использовать явное ожидание:

 element = WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "img[alt=\"Close Window\"]"))) print "done with waiting" browser.find_element_by_css_selector("img[alt=\"Close Window\"]").click() 

Не работает: ожидание заканчивается довольно быстро (сообщение «сделано с ожиданием» появляется через секунду или около того), но затем код снова зависает. Я также пытался использовать неявное ожидание, но это тоже не сработало.

Итак, я в недоумении. Тот же скрипт работает как шарм, когда я использую Firefox, так почему же он не работает с PhantomJS?

Я не знаю, помогает ли это, но вот источник страницы:

http://www.flickr.com/photos/88729961@N00/9512669916/sizes/l/in/photostream/

Я не знаю, помогает ли это, но когда я нарушаю выполнение w / Crtl-C, я получаю следующее:

 Traceback (most recent call last): File "myscript.py", line 361, in <module> myfunction(some_argument, some_other_argument) File "myscript.py", line 277, in myfunction browser.find_element_by_css_selector("img[alt=\"Close Window\"]").click() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium-2.33.0-py2.7.egg/selenium/webdriver/remote/webelement.py", line 54, in click self._execute(Command.CLICK_ELEMENT) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium-2.33.0-py2.7.egg/selenium/webdriver/remote/webelement.py", line 228, in _execute return self._parent.execute(command, params) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium-2.33.0-py2.7.egg/selenium/webdriver/remote/webdriver.py", line 163, in execute response = self.command_executor.execute(driver_command, params) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium-2.33.0-py2.7.egg/selenium/webdriver/remote/remote_connection.py", line 349, in execute return self._request(url, method=command_info[0], data=data) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium-2.33.0-py2.7.egg/selenium/webdriver/remote/remote_connection.py", line 396, in _request response = opener.open(request) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 404, in open response = self._open(req, data) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 422, in _open '_open', req) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain result = func(*args) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1214, in http_open return self.do_open(httplib.HTTPConnection, req) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1187, in do_open r = h.getresponse(buffering=True) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1045, in getresponse response.begin() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 409, in begin version, status, reason = self._read_status() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 365, in _read_status line = self.fp.readline(_MAXLINE + 1) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 476, in readline data = self._sock.recv(self._rbufsize) KeyboardInterrupt 

Я новичок в программировании, и я не могу понять этот вывод (я даже не знаю, что такое «сокет»). Но, может быть, некоторые из вас могут указать мне в правильном направлении? Быстрое исправить может быть слишком много, чтобы спросить, но, может быть, намек на то, что может продолжаться?

(Mac OS X 10.6.8, Python 2.7.5, Selenium 2.33, PhantomJS 1.9.1)