如何上传文件(图片)与selenium,python

有没有可能用seleniumtesting工具上传网页图片? 我正在使用python。

我尝试了很多东西,但没有任何工作。 我很绝望。

上传看起来像这样:

http://img21.imageshack.us/img21/1954/uploadgr.jpg

感谢您的帮助

菲利普。

上传input控件打开一个本地对话框(由浏览器完成),所以点击控件或通过Selenium浏览button将popup对话框,testing将挂起。

解决方法是通过JavaScript设置上传input的值(在Java中是通过JavascriptExecutor完成),然后提交表单。

看到这个问题在C#中的示例,我相信也有一种方法来在Python中调用JavaScript,但我从来没有使用过Selenium Python绑定

我正在做的是(确保drv是webdriver的一个实例):

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

然后find你的提交button并点击它。

所有这些方法不会与现代图像上传在olx! 替代方法(仅适用于Windows)

 1. Automation of windows can be done using Autoit 2. Install Autoit and SciTe Script editor 3. Autoit code :(imageupload.au3) WinActivate("File Upload"); for chrome use "open" that is the name of the window that pops send("D:\images\image1.png"); path of the file Send("{ENTER}") 4. compile it to get an .exe file(imageupload.exe) 5. Now from python call the .exe file like import os import os.system('C:\images\imageupload.exe') #path of the .exe file 
 import win32com.client shell = win32com.client.Dispatch("WScript.Shell") shell.Sendkeys("C:\text.txt") shell.Sendkeys("~") 

将解决问题

我已经使用下面的脚本格式上传图像。 这可能会帮助你。

  Imagepath=os.path.abspath('.\\folder1\\subfolder2\file1.jpg') driver.find_element_by_id("Id of the element").clear() driver.find_element_by_id("Id of the element").send_keys(Imagepath) 

如果你没有这个对象的ID,那么你可以相应地使用xpath或者cssselect器。

我使用优良的上传 ,用pytest运行seleniumtesting,这对我工作:

  elm = driver.find_element_by_xpath("//input[@type='file']") elm.send_keys(os.getcwd() + "/tests/sample_files/Figure1.tif") 

在我的情况下,不需要表单提交或回车键。

谢谢你所有的答案! 它帮了很多!