Web 自动化使用 Python/Selenium 通过 Dojo FileUploader 上传文件

Web Automation using Python/Selenium to upload a file through Dojo FileUploader

一般来说,使用Selenium实现自动化上传文件很简单,解决方案也很多。

但是, 我面临的麻烦是实现 Web 自动化以通过 Dojo FileUploader 上传文件。

    <div class="ux uploader dnd fluid webDriver_uploader enforce-validity-marker-class mtc-uploader" data-dojo-attach-event="click:_onClickDomNode,drop:_onDropDomNode,dragover:_onDragOverDomNode,dragleave:_onDragLeaveDomNode,mouseenter:_onMouseEnterDomNode,mouseleave:_onMouseLeaveDomNode" id="Uploader_0" lang="en" widgetid="Uploader_0">
      <i class="upload icon" data-dojo-attach-point="iconNode"></i>
      <input type="file" name="">
      <button type="button" class="ux button" data-dojo-attach-point="browseButtonNode" data-dojo-attach-event="blur:_onBlurBrowseButtonNode,click:_onClickBrowseButtonNode,focus:_onFocusBrowseButtonNode">Choose File
      </button>
      <button type="button" class="ux basic icon button hidden" data-dojo-attach-point="removeButtonNode" data-dojo-attach-event="click:_onClickRemoveButtonNode" title="Remove File">
        <i class="trash icon">
          <span class="description">Remove
          </span>
        </i>
      </button>
      <div class="placeholder label" data-dojo-attach-point="labelNode" data-dojo-attach-event="click:_onClickLabelNode">or drag and drop here
      </div>
    </div>

我试图在单击“选择文件”按钮后控制文件打开对话框。但似乎无法在 selenium 和文件打开对话框之间进行交互。

我正在研究 Ubuntu 18.04

Selenium 只能与浏览器交互,当单击选择文件按钮时,它将打开文件资源管理器(在 OS 中)。

解决方法:您可以直接将文件路径传递给 selenium,而不是打开文件资源管理器弹出窗口,它可以自动上传。 例如:driver.findElementById().send_keys('filepath')

您还可以使用 PyWinAuto 与 windows.(https://pywinauto.readthedocs.io/en/latest/).

的文件浏览器交互