【问题标题】:How to upload file in headless browser using robot class in selenium java如何使用 selenium java 中的机器人类在无头浏览器中上传文件
【发布时间】:2017-06-27 00:57:21
【问题描述】:

如何使用 selenium java 中的机器人类在无头浏览器中上传文件作为 sendkeys() 方法在我的情况下不起作用。我正在为我的脚本使用 firefox 和 selenium web driver java

【问题讨论】:

  • 是否需要使用robot class上传文件?你试过AutoIT吗?
  • 不需要请告诉我如何使用 AutoIT 上传

标签: java firefox selenium-webdriver headless-browser


【解决方案1】:
public static void setClipboardData(String string) {
    StringSelection stringSelection = new StringSelection(string);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection,null);
}          

setClipboardData(path);
//native key strokes for CTRL, V and ENTER keys

Robot robot = new Robot();
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);

注意:如果您使用的是无头浏览器,例如chrome或phantomjs,机器人类将控制当前窗口并在其中发送路径。此外,如果您使用 autoIT,脚本将等待活动窗口出现。所以很明显脚本将被暂停,它无法找到下一个元素。


AutoIT 脚本

WinWaitActive("Open")
Send(@ScriptDir & "\logo.png")
Send("{ENTER}")

【讨论】:

    【解决方案2】:

    无需使用 Robot 类来使用 selenium java 上传文件。 首先,(1) 上传你的文件在 /tmp 文件夹中,如果是 linux 和 temp 文件夹,如果是 windows OS,然后,使用下面的代码来上传文件

    String path = FILE_UPLOAD_PATH; 
    //(Full path with file name from /tmp folder)
    driver.findElement(By.id("FILE_INPUT_ID")).sendKeys(path);
    

    它会上传文件。

    注意:如果不需要释放内存,请在上传后从/tmp文件夹中删除文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-02
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2018-06-08
      • 2016-04-02
      相关资源
      最近更新 更多