如何上传文件(图片)与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")
在我的情况下,不需要表单提交或回车键。
谢谢你所有的答案! 它帮了很多!