Selenium如何上传多张图片

xiaoxiao2021-02-28  72

这个是在本人的自动化测试项目中遇到的问题,本来就是一个简单的上传图片的问题。分为上传一张图片和多张图片,在这个测试项目中多张图片限制为三张图片 一张图片: 三张图片:

在此说一下我的心路历程,一张图片的上传用了两种方法均可以。 一种直接用sendkeys方法上传

driver.findElement(By.className("upload-fileinput")).sendKeys("E:\\123.jpg");

另外一种用AutoIT方法上传。用AutoIt的原因是selenium无法识别windows的窗口,所以要借助autoIT工具来实现。

AutoIt脚本

;ControlFocus("title","text",controlID) Edit1=Edit instance 1 ControlFocus("选择要加载的文件", "","Edit1") ; Wait 10 seconds for the Upload window to appear WinWait("[CLASS:#32770]","",10) ; Set the File name text on the Edit field ControlSetText("选择要加载的文件", "", "Edit1", "F:\\pic\\1.png") Sleep(2000) ; Click on the Open button ControlClick("选择要加载的文件", "","Button1");

最后一定要用AutoIt编译成.exe文件,才可以被调用。

这样上传一张图片的问题就被解决了。但是在上传组图的时候,上述两种办法都没有办法完美解决。AutoIt曾经遇到过一次可以成功解决上传三张图片的问题,但是多次执行代码,效果不佳。所以后来想到借助另外一种办法sikulix来解决上传三张图片的问题。

1、首先在pom.xml中添加依赖

<dependency> <groupId>com.sikulix</groupId> <artifactId>sikulixapi</artifactId> <version>1.1.0</version> </dependency>

2、将windows窗口中需要操作控件的图片截图保存下来

3、将需要上传的图片保存在某个路径

4、在测试脚本中调用sikulix

driver.findElement(By.xpath("(//input[@type='file'])[1]")).click(); // 在Windows上操作打开按钮 Screen s=new Screen(); // 定义要上传的图片存放路径 String imgPath_p="F:\\pic\\"; // 定义sikulix的图片存放路径 String imgPath_s="D:\\sikulix\\"; s.type(imgPath_p+"1.png"); s.click(imgPath_s+"open.png"); Thread.sleep(3*1000); driver.findElement(By.xpath("(//input[@type='file'])[2]")).click(); s.type(imgPath_p+"2.jpg"); s.click(imgPath_s+"open.png"); Thread.sleep(3*1000); driver.findElement(By.xpath("(//input[@type='file'])[3]")).click(); s.type(imgPath_p+"3.jpg"); s.click(imgPath_s+"open.png"); Thread.sleep(3*1000);

接下来你会发现,执行脚本,三张图片成功上传

总结一下:上传图片的方式有三种:第一种直接用sendkeys方法,一般是针对input按钮;第二种是借助于AutoIT工具;第三种就是借助于sikulix。反正遇到问题就是多尝试咯。

转载请注明原文地址: https://www.6miu.com/read-72531.html

最新回复(0)