我有span
个链接来上传图片。点击此链接后,会打开Chrome窗口以选择文件。但Selenium无法自动完成此操作。如何处理此窗口并选择文件?
choose_photo = driver.find_element_by_id("form-2033-innerCt")
choose_photo.click()
choose_photo.send_keys("C:\\Users\\Support\\AppData\\Roaming\\Skype\\My Skype Received Files\\1.png")
这是点击
的HTML元素<span id="fileuploadfield-2034-button-btnInnerEl" data-ref="btnInnerEl" unselectable="on" class="x-btn-inner x-btn-inner-default-small">Choose photo</span>
截图:
请注意,HTM
L元素不是type = file
,如您所见。
答案 0 :(得分:1)
在HTML中,上传文件的常用方法是使用input type=file
。我猜你的情况是隐藏了file
输入,点击span
会触发它。
您可以尝试找到隐藏的输入并键入其中。
另见How to handle windows file upload using Selenium WebDriver?
答案 1 :(得分:1)
&GT;
driver.find_element_by_id("IdOfInputTypeFile").send_keys(os.getcwd()+"/image.png")
&GT;
OR 尝试使用AutoIT上传文件,如果这个不适合你,那么使用AutoIT上传文件
答案 2 :(得分:-1)
下载和安装AutoIt的步骤: -
安装
转到程序菜单,查看AutoIt文件夹并根据您的系统打开
现在下载AutoIt脚本编辑器并安装,下载link = http://www.autoitscript.com/site/autoit/downloads/
使用AutoIT的步骤: -
识别Windows控件
使用已识别的Windows控件构建AutoIt脚本
编译.au3脚本并将其转换为.exe文件
将.exe文件调用到Selenium测试用例
以下是AutoIt脚本: -
等待10秒钟以显示上传窗口
WinWait("[CLASS:#32770]","",10)
使用WinWait返回的句柄
将输入焦点设置为“上载”窗口的编辑控件 ControlFocus("File Upload","","Edit1")
Sleep(2000)
在“编辑”字段
上设置文件名文本 ControlSetText("File Upload", "", "Edit1", "SomeFile.txt")
Sleep(2000)
单击“打开”按钮
ControlClick("File Upload", "","Button1");
编译.au3 script
并将其转换为.exe
文件
将.exe
文件调入Selenium测试用例,例如
Runtime.getRuntime().exec("D:\AutoIt\AutoItTest.exe");