如何使用Python + Selenium上传文件

时间:2017-02-07 09:46:14

标签: selenium-webdriver selenium-chromedriver

我有span个链接来上传图片。点击此链接后,会打开Chrome窗口以选择文件。但Selenium无法自动完成此操作。如何处理此窗口并选择文件?

choose_photo = driver.find_element_by_id("form-2033-innerCt")
choose_photo.click()
choose_photo.send_keys("C:\\Users\\Support\\AppData\\Roaming\\Skype\\My Skype Received Files\\1.png")

这是点击

的HTML元素
<span id="fileuploadfield-2034-button-btnInnerEl" data-ref="btnInnerEl" unselectable="on" class="x-btn-inner x-btn-inner-default-small">Choose photo</span>

截图:

enter image description here

请注意,HTM L元素不是type = file,如您所见。

3 个答案:

答案 0 :(得分:1)

在HTML中,上传文件的常用方法是使用input type=file。我猜你的情况是隐藏了file输入,点击span会触发它。 您可以尝试找到隐藏的输入并键入其中。

另见How to handle windows file upload using Selenium WebDriver?

答案 1 :(得分:1)

&GT;

driver.find_element_by_id("IdOfInputTypeFile").send_keys(os.getcwd()+"/image.png")

&GT;

OR 尝试使用AutoIT上传文件,如果这个不适合你,那么使用AutoIT上传文件

答案 2 :(得分:-1)

下载和安装AutoIt的步骤: -

  1. 下载link = http://www.autoitscript.com/site/autoit/downloads/

  2. 安装

  3. 转到程序菜单,查看AutoIt文件夹并根据您的系统打开

  4. 现在下载AutoIt脚本编辑器并安装,下载link = http://www.autoitscript.com/site/autoit/downloads/

  5. 使用AutoIT的步骤: -

    1. 识别Windows控件

    2. 使用已识别的Windows控件构建AutoIt脚本

    3. 编译.au3脚本并将其转换为.exe文件

    4. 将.exe文件调用到Selenium测试用例

    5. 以下是AutoIt脚本: -

      等待10秒钟以显示上传窗口

      WinWait("[CLASS:#32770]","",10)
      

      使用WinWait返回的句柄

      将输入焦点设置为“上载”窗口的编辑控件
       ControlFocus("File Upload","","Edit1")
      
       Sleep(2000)
      

      在“编辑”字段

      上设置文件名文本
        ControlSetText("File Upload", "", "Edit1", "SomeFile.txt")
      
        Sleep(2000)
      

      单击“打开”按钮

      ControlClick("File Upload", "","Button1");
      
      1. 编译.au3 script并将其转换为.exe文件

      2. .exe文件调入Selenium测试用例,例如

        Runtime.getRuntime().exec("D:\AutoIt\AutoItTest.exe");