2016-06-18 3 views
1

на следующем является надрезом некоторых crowdfire.com HTML кода, где им пытается загрузить файл в классе ввода = ...Python загрузка изображений/файл с селеном WebDriver

<div id="ember1089" class="ember-view"> 
    <div id="ember1090" class="action__addImage pointer ember-view tooltipstered"> 
     <div data-ember-action="1091"> 
       <img class="iconImg iconImg--camera" src="/publish/images/icon-camera-b432ac4c5b369d4616baf097b951d9b4.png"/> 
       <span>Add an image</span> 
     </div> 
<input class="js-file-input action__fileInput" type="file" data-ember-action="1092"/> 
</div> 

Теперь ниже что я до сих пор. Я создал экземпляр драйвера, код перед тем бревна в сайте без проблем и находит все другого XPaths

image = driver.find_element_by_xpath('.//*[@id=\'ember1089\']/input') 
time.sleep(2) 
print 'found element' 
image.send_keys('C:\Users\Brian\Desktop\Empire_fort\Bots\GetPICtures\Empire.jpg) 
print 'uploading' 
time.sleep(5) 

следующим является ошибкой, я получаю, и я действительно не понимаю, в чем проблема, На веб-сайте есть ссылка «добавить изображение». если щелкнуть, он откроет проводник окна, откуда пользователь может выбрать файл и загрузить его.

waiting 
about toupload 
found element 
Traceback (most recent call last): 
    File "C:\Users\Brian\Desktop\Empire_fort\Bots\GetPICtures\nowupload.py", line 55, in <module> 
    image.send_keys(r'C:\Users\Brian\Desktop\Empire_fort\Bots\GetPICtures\Empire.jpg') 
    File "C:\Python2.7.11\lib\site-packages\selenium\webdriver\remote\webelement.py", line 321, in send_keys 
    self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': keys_to_typing(value)}) 
    File "C:\Python2.7.11\lib\site-packages\selenium\webdriver\remote\webelement.py", line 456, in _execute 
    return self._parent.execute(command, params) 
    File "C:\Python2.7.11\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python2.7.11\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with 
Stacktrace: 
    at fxdriver.preconditions.visible (file:///c:/users/brian/appdata/local/temp/tmpxjigan/extensions/[email protected]/components/command-processor.js:10092) 
    at DelayedCommand.prototype.checkPreconditions_ (file:///c:/users/brian/appdata/local/temp/tmpxjigan/extensions/[email protected]/components/command-processor.js:12644) 
    at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/brian/appdata/local/temp/tmpxjigan/extensions/[email protected]/components/command-processor.js:12661) 
    at DelayedCommand.prototype.executeInternal_ (file:///c:/users/brian/appdata/local/temp/tmpxjigan/extensions/[email protected]/components/command-processor.js:12666) 
    at DelayedCommand.prototype.execute/< (file:///c:/users/brian/appdata/local/temp/tmpxjigan/extensions/[email protected]/components/command-processor.js:12608) 

Спасибо!

Ps Update, работает с с экземпляром webdriver.Chrome(), но не с Firefox или phantomjs

ответ

0

Я подозреваю, что вам нужно сделать input видны первые:

image = driver.find_element_by_css_selector('#ember1089 input') 
driver.execute_script("arguments[0].style.display = 'block';", image); 

image.send_keys('C:\Users\Brian\Desktop\Empire_fort\Bots\GetPICtures\Empire.jpg') 
Смежные вопросы