使用远程Selenium服务器并使用filechooser对话框上传文件

时间:2017-05-25 01:44:05

标签: selenium selenium-webdriver selenium-firefoxdriver

如何使用远程Selenium服务器实例,并测试从文件系统上传文件?如果我使用远程Selenium服务器,该服务器将如何能够看到本地文件系统上的内容?

例如,我需要通过Web界面测试上传文件到API服务器。因此Selenium将模拟Web界面,但由于Selenium在远程服务器上运行,Selenium如何查看文件系统上的文件?

1 个答案:

答案 0 :(得分:2)

这取决于你如何使用selenium(框架和等)但基本的是当你调用selenium来执行文件上传时,你正在向selenium远程服务器发出HTTP POST请求并发送本地文件作为它的参数。

<强>添加

如果你在这里查看Python框架 - https://github.com/SeleniumHQ/selenium/blob/fec87ea8c2a4704bd1e7bcddf9a98e400823ef4e/py/selenium/webdriver/remote/webelement.py

在“本地”代码中,您可以在send_keys函数中写入文件路径

如果此功能理解它是文件

local_file = self.parent.file_detector.is_local_file(*value)

它将在同一个文件中调用def _upload

它将压缩并编码,

并传递给下一个功能

return self._execute(Command.UPLOAD_FILE, {'file': content})['value']

在下一个文件中 - 您可以找到_upload执行的命令

https://github.com/SeleniumHQ/selenium/blob/fec87ea8c2a4704bd1e7bcddf9a98e400823ef4e/py/selenium/webdriver/remote/remote_connection.py

def execute(self, command, params):

Command.UPLOAD_FILE: ('POST', "/session/$sessionId/file")