【发布时间】:2016-09-12 14:53:11
【问题描述】:
所以我正在测试一个 Web 客户端,它与一个对我上传的文本文件执行某些操作的引擎进行通信。所以基本上,我选择一个要上传的文件,一旦上传了这个文件,我可以按开始,引擎会做它的事情并返回一个结果。我正在尝试在 python 中使用 selenium 测试前端。此 Web 客户端接受 zip 或 txt 文件。这个 Web 客户端的开发人员做了这样的设置,当上传 zip 或文本以外的文件类型时,它会给出类似这样的错误
File type "audio/wav" is not supported: Must be one of "text/plain", "application/zip", "application/zip-compressed", "application/x-zip-compressed".
在这种情况下,我尝试上传 wav 音频文件。当我尝试手动上传 zip 文件时,它按预期工作。但是,当我在 selenium 中使用相同的文件尝试相同的过程时,它不再识别文件类型并给我这个错误
File type "" is not supported: Must be one of "text/plain", "application/zip", "application/zip-compressed", "application/x-zip-compressed".
所以文件类型无法识别。这是我用来上传文件的内容:
choose = self.driver.find_element_by_id("chooseButton")
time.sleep(1)
#clicks to open upload window
choose.click()
time.sleep(1)
#ZIp file with other zips
pyautogui.typewrite("C:\\Transcriber\\Framework\\test\\audio\\Nested.zip")
time.sleep(1)
pyautogui.press('enter')
我正在使用 pyautogui 来操作当我单击上传按钮时弹出的上传窗口,所以就好像我正在自动化我的键盘一样。 time.sleep 只是为了确保在动作之间提供足够的时间,以便一个动作在下一个动作开始之前结束。
我的 zip 只是一个普通的 zip 文件。当我在硒中运行它时,它给了我上述错误。有谁知道是什么问题?这是一个python问题吗?提前致谢。
编辑:仅当我尝试上传 zip 文件时才会出现此问题,如果我将测试用例中的 zip 文件替换为 txt 文件,则可以正常工作。
Edit2:我的测试用例完成后,如果我让浏览器保持打开状态,即使我尝试手动上传,错误仍然会发生。所以这似乎只发生在由 selenium 产生的浏览器实例中。否则,如果我自己打开一个新的浏览器,上传一个 zip 文件就可以了。
【问题讨论】:
-
选择上传文件时,是鼠标选择还是输入路径?如果你像 pyautogui 一样输入路径并按下回车会发生什么?可能文件名没有被拾取,它正试图将一个空文件名传递给上传者,因此出现“不支持文件类型”错误。
-
所以,在我上面的代码中,我使用 pyautogui 输入它,因为当上传窗口弹出时硒不再具有控制权,所以我需要“手动”输入键。当我监视测试时,我可以看到路径已完成,因为在按 Enter 之前有 1 秒的暂停以确保它已完成打印。我已经在手动测试中尝试了确切的路径并且它有效。当然,在我的手动测试中,我必须删除双反斜杠。
标签: python unit-testing selenium file-upload