zoukankan      html  css  js  c++  java
  • 自动化测试---文件上传

    由于在web上点击了本地上传图片后,弹出的框很特殊,selenium无法识别这个弹窗,所以在selnium中没有直接的方法去实现上传本地文件。

    我们利用Robot的大致流程是这样的:

    1、用selenium点击web上本地上传文件的按钮

    2、在弹出框,文件路径输入框默认是光标聚集,我们把文件在磁盘上的路径,通过拷贝与粘贴方法写上去

    3、通过按下回车键,默认触发弹窗的确认按钮,完成文件的上传过程。

    场景举例:        

    打开百度首页,搜索按钮左侧有一个照相机的图标,点击可以选择图片搜索,我们通过本地上传图片的过程来模拟文件自动化上传操作。准备条件,你在百度图片搜索一个图片,保存到你桌面,例如我找到一个关于selenium的图片,然后保存在桌面,名称为selenium.png。 

    相关脚本代码如下

        package lessons;  
          
        import java.awt.Robot;  
        import java.awt.Toolkit;  
        import java.awt.datatransfer.StringSelection;  
        import java.awt.event.KeyEvent;  
          
        import org.openqa.selenium.By;  
        import org.openqa.selenium.WebDriver;  
        import org.openqa.selenium.chrome.ChromeDriver;  
          
        public class FileUpload {  
        public static void main(String[] args) throws Exception {  
                  
            System.setProperty("webdriver.chrome.driver", ".\Tools\chromedriver.exe");  
                  
            WebDriver driver = new ChromeDriver();  
            driver.manage().window().maximize();  
                  
            driver.get("https://www.baidu.com");  
                  
            // 指定图片的路径,这里我放桌面上  
            StringSelection sel = new StringSelection("C:\Users\Anthony\Desktop\selenium.jpg");  
                   
            // 把图片文件路径复制到剪贴板  
            Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel,null);  
            System.out.println("selection" +sel);  
                   
            // 点击照相机这个按钮  
            driver.findElement(By.xpath("//*/span[@class='soutu-btn']")).click();  
                  
             // 点击本地上传图片  
             driver.findElement(By.xpath("//*/input[@class='upload-pic']")).click();  
                  
             // 新建一个Robot类的对象  
             Robot robot = new Robot();  
             Thread.sleep(1000);  
                       
             // 按下回车  
             robot.keyPress(KeyEvent.VK_ENTER);  
                  
             // 释放回车  
             robot.keyRelease(KeyEvent.VK_ENTER);  
                  
             // 按下 CTRL+V  
             robot.keyPress(KeyEvent.VK_CONTROL);  
             robot.keyPress(KeyEvent.VK_V);  
                  
             // 释放 CTRL+V  
             robot.keyRelease(KeyEvent.VK_CONTROL);  
             robot.keyRelease(KeyEvent.VK_V);  
             Thread.sleep(1000);  
                         
             // 点击回车 Enter   
             robot.keyPress(KeyEvent.VK_ENTER);  
             robot.keyRelease(KeyEvent.VK_ENTER);  
                  
            }  
          
        }  

     上面看到,Robot中键盘输入行为分为了两个过程:第一个过程是按下键盘上键不动,第二个过程是释放或者松开这个键。所以上面代码看来来有点多,有点啰嗦的感觉。由于图片是百度搜索上下载的,所以,运行肯定有相关匹配的结果。

  • 相关阅读:
    判断一个字符串是否为回文串
    读<大道至简>软件工程实践者的思想有感
    Java学习10.23(设置页面的编码方式1)
    Java学习10.25(javaweb在界面输出2)
    【搜索】C000_LG_奶酪(bfs)
    【并查集】B001_AW_自动程序分析(不要求顺序时的离散化)
    b_aw_信息传递 & 银河英雄传说(并查集暴力求环 / 记忆化 | 带权并查集)
    b_pat_团伙头目(并查集/dfs+字符串整形互相映射)
    【堆】C003_AW_接水问题(暴力 / 堆)
    【并查集】C002_AW_樱桃网 & 打击犯罪(最下生成树 / dfs / 并查集求连通块)
  • 原文地址:https://www.cnblogs.com/liu-Gray/p/7804802.html
Copyright © 2011-2022 走看看