文件的上传

自动化开发过程中,经常遇到的就是点击一个本地文件上传到服务器上。面对这种情况,经常会有上传文件的操作,其实WebDriver里面并没有直接提供对应的方法。

先来看看上传文件操作的用户过程。

打开如下测试页面:

点击浏览按钮,弹出一个文件选择框:

任意选择一个文件:

最后,点击Submit Single按钮,由于测试过程是一个本地文件,所以,点击上传按钮会报错。

对应的测试网页源码:

<html>
    <body>
    <div>
        <form name="form1" action="fileUpload.php" method="post" enctype="multipart/form-data">
            <label for="file">File:</label>
                <input type="file" name="file" id="file" /> 
                <br />
                <input type="hidden" name="multi" value="false"/>
                <input type="submit" name="submit" value="Submit Single" />
        </form>
    </div>
    </body>
</html>

其中,form标签用于封装input,最后通过submit提交到action指定的服务器。type=“file”的输入框就是用来接收文件的按钮,tpye=“submit”的按钮,点击后就会提交整个form。

可以看到,上传过程一般要打开一个系统的Dialog窗口,然后选择本地文件添加(问题:如何操作打开一个系统的Dialog)。其实,上传本地文件,并没有看到那么复杂,只要定位到上传按钮,通过send_keys添加本地文件就可以了,绝对路径和相对路径都可以。

上传文件实例代码来看看具体操作:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("file:///D:/uploadfile.html")
# 输入上传文件路径
driver.find_element_by_xpath("//input[@name='file']").send_keys("D:\\info.txt")
driver.find_element_by_xpath("//input[@name='submit']").click()
driver.quit()

如上实例代码,整个过程其实并没有特殊代码,还是使用常见的send_keys和click就已经完成了上传文件。

IT赶路人

专注IT知识分享