Mac下 使用selenium 上传文件

Mac下 使用selenium 上传文件

在使用selenium 编写自动化的过程中, 会遇到上传文件的问题
对于windows 系统, 可以使用第三方软件Autoit工具, 或者直接给input赋值, 但是对于mac 系统, 确无法使用第三方软件,且文件弹框也没有input 类型的控件。
那我们会想如何解决mac 上传文件的问题呢? 答案马上揭晓…

  1. 可以使用快捷键模拟操作,代码如下:

    public void uploadFile(String filepath){
     //////File Need to be imported
     	File file = new File(filepath);
     	StringSelection stringSelection= new StringSelection(file.getAbsolutePath());
      ///////Copy to clipboard/////
     	Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
    
     	Robot robot = null;
     	try {
     		robot = new Robot();
     	} catch (AWTException e) {
     		// TODO Auto-generated catch block
     		e.printStackTrace();
     	}
          ////// Cmd + Tab is needed since it launches a Java app and the browser looses focus 
    
     	robot.keyPress(KeyEvent.VK_META);
     	
     	robot.keyPress(KeyEvent.VK_TAB);
    
     	robot.keyRelease(KeyEvent.VK_META);
    
     	robot.keyRelease(KeyEvent.VK_TAB);
    
     	robot.delay(500);
    
      /////Open Goto window shortkey is commmand +shift + G, adpate to MAC///////
    
     	robot.keyPress(KeyEvent.VK_META);
    
     	robot.keyPress(KeyEvent.VK_SHIFT);
    
     	robot.keyPress(KeyEvent.VK_G);
    
     	robot.keyRelease(KeyEvent.VK_META);
    
     	robot.keyRelease(KeyEvent.VK_SHIFT);
    
     	robot.keyRelease(KeyEvent.VK_G);
    
       /////Paste the clipboard value
    
     	robot.keyPress(KeyEvent.VK_META);
    
     	robot.keyPress(KeyEvent.VK_V);
    
     	robot.keyRelease(KeyEvent.VK_META);
    
     	robot.keyRelease(KeyEvent.VK_V);
    
        ///////Press Enter key to close the Goto window and Upload window
     	
     	robot.keyPress(KeyEvent.VK_ENTER);
    
     	robot.keyRelease(KeyEvent.VK_ENTER);
     	
    
     	robot.delay(2000);
    
     	robot.keyPress(KeyEvent.VK_ENTER);
    
     	robot.keyRelease(KeyEvent.VK_ENTER);
      }
    

你可能感兴趣的:(自动化)