【问题标题】:Not able to upload file using robot class and Sendkeys无法使用机器人类和 Sendkeys 上传文件
【发布时间】:2022-05-07 23:12:33
【问题描述】:

我无法使用机器人类和 sendkeys 上传文件。

下面是我试过的代码

package garbage;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class imageupload {

    static WebDriver driver;
    static String baseURL="http://elance.wetwaresoft.com/account/register";


    public static void main(String[] args) throws AWTException, InterruptedException, IOException 
    {
        driver=new FirefoxDriver();
        driver.get(baseURL);
        WebElement btn=driver.findElement(By.xpath("//*[@class='fileupload-new']"));
        btn.click();
        System.out.println("Going in Robot class");
        Runtime.getRuntime().exec("notepad");
        Robot r=new Robot();
        r.delay(1000);
        r.keyPress(KeyEvent.VK_ENTER); 
        r.keyPress(KeyEvent.VK_D);
        r.keyPress(KeyEvent.VK_SHIFT);
        r.keyPress(KeyEvent.VK_SEMICOLON);
        r.keyRelease(KeyEvent.VK_SHIFT);
        r.keyPress(KeyEvent.VK_BACK_SLASH);
        r.keyPress(KeyEvent.VK_A);
        r.keyPress(KeyEvent.VK_DOWN);
        r.keyPress(KeyEvent.VK_ENTER);
        System.out.println("File uploaded");
    }
}

当我在记事本中执行我的机器人类代码时,它会输入路径,但是当我在弹出窗口中执行它时,它不会输入任何内容。

如何使用机器人和 sendkeys 上传文件?

【问题讨论】:

    标签: java selenium selenium-webdriver webdriver


    【解决方案1】:

    我已经使用 Robot 将文件上传逻辑分离到单独的类中,并使方法成为静态的。在方法fileAttachmentUsingRobot 中传递要上传的图像的路径,即图像的完整系统路径。

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.awt.*;
    import java.awt.datatransfer.StringSelection;
    import java.awt.event.KeyEvent;
    
    /**
     * Created by ypolshchykau on 30.01.2015.
     */
    public class FileAttacherRobotImplementation {
        public final static Logger log = LoggerFactory.getLogger(FileAttacherRobotImplementation.class);
    
        /**
         * this method implements file attachment using Robot mechanism
         *
         * @param filePathToImage
         */
    
        public static void fileAttachmentUsingRobot(String filePathToImage) {
            Robot robot = null;
            try {
                robot = new Robot();
            } catch (AWTException e) {
                e.printStackTrace();
            }
            setClipboardData(filePathToImage);
            robot.delay(1000);
    
            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_V);
            robot.keyRelease(KeyEvent.VK_V);
            robot.keyRelease(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_ENTER);
            robot.keyRelease(KeyEvent.VK_ENTER);
        }
    
        /**
         * method for copying file in order to attach file in File open window
         *
         * @param str
         */
        public static void setClipboardData(String str) {
            StringSelection stringSelection = new StringSelection(str);
            Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
        }
    
    }
    

    希望对你有所帮助。

    【讨论】:

      【解决方案2】:
      String file = "C:\\Users\\KT System\\Downloads\\sample1.xlsx";
           StringSelection stringselection = new StringSelection(file);
          
       Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringselection, null);
           
           Robot robot = new Robot();
           Thread.sleep(2000);
           robot.keyPress(KeyEvent.VK_CONTROL);
           Thread.sleep(2000);
           robot.keyPress(KeyEvent.VK_V);
           Thread.sleep(2000);
           robot.keyRelease(KeyEvent.VK_CONTROL);
           Thread.sleep(2000);
           robot.keyRelease(KeyEvent.VK_V);
           Thread.sleep(2000);
           robot.keyPress(KeyEvent.VK_ENTER);
           Thread.sleep(2000);
           robot.keyRelease(KeyEvent.VK_ENTER);
      

      【讨论】:

        猜你喜欢
        • 2011-08-02
        • 1970-01-01
        • 1970-01-01
        • 2018-09-18
        • 2020-09-20
        • 2019-12-30
        • 2013-02-13
        • 2020-08-30
        • 2019-01-30
        相关资源
        最近更新 更多