Selenium如何上传多张图片

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

在此说一下我的心路历程,一张图片的上传用了两种方法均可以。
一种直接用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.sikulixgroupId>
                <artifactId>sikulixapiartifactId>
                <version>1.1.0version>
           dependency>

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

Selenium如何上传多张图片_第3张图片

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

Selenium如何上传多张图片_第4张图片

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);

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

Selenium如何上传多张图片_第5张图片

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

你可能感兴趣的:(selenium)