【问题标题】:Python uploading image/file with selenium webdriverPython 使用 selenium webdriver 上传图像/文件
【发布时间】:2016-10-19 22:10:26
【问题描述】:

以下是一些 crowdfire.com HTML 代码的片段,我试图在输入 class=... 中上传文件。

<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/fxdriver@googlecode.com/components/command-processor.js:10092)
    at DelayedCommand.prototype.checkPreconditions_ (file:///c:/users/brian/appdata/local/temp/tmpxjigan/extensions/fxdriver@googlecode.com/components/command-processor.js:12644)
    at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/brian/appdata/local/temp/tmpxjigan/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
    at DelayedCommand.prototype.executeInternal_ (file:///c:/users/brian/appdata/local/temp/tmpxjigan/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
    at DelayedCommand.prototype.execute/< (file:///c:/users/brian/appdata/local/temp/tmpxjigan/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)

谢谢!

Ps 更新,它适用于 webdriver.Chrome() 实例,但不适用于 Firefox 或 phantomjs

【问题讨论】:

    标签: python selenium firefox selenium-webdriver webautomation


    【解决方案1】:

    我怀疑您需要首先让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')
    

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 2017-10-02
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 2014-12-30
      • 2018-12-22
      相关资源
      最近更新 更多