selenium python

时间:2016-09-12 14:53:12

标签: python unit-testing selenium file-upload

所以我正在测试一个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文件。当我在selenium中运行它时,它给了我上面的错误。有谁知道是什么问题?这是一个python问题吗?提前谢谢。

编辑:只有在我尝试上传zip文件时才会出现此问题,如果我将测试用例中的zip文件替换为txt文件,那么它可以正常工作。

Edit2:我的测试用例结束后,如果我打开浏览器,即使我尝试手动上传,仍会出现错误。所以这似乎只发生在由selenium产生的浏览器实例中。否则,如果我自己打开一个新的浏览器,上传一个zip工作正常。

1 个答案:

答案 0 :(得分:0)

Python + selenium还为您提供了直接上传文件的选项。

我不确定你的情况是否属实,因为我没有完整的html用于"选择"元件。

在我的情况下,我有一个输入元素[type = file],这有效:

driver.find_element_by_css_selector('输入[type =" file"]')。send_keys(path + filename)

根据您的情况,也许您必须在此之后单击确定/提交按钮。

希望这有帮助!

有关此内容的详细信息,请访问:How to upload file ( picture ) with selenium, python