java - 机器人类不适用于 IE 中的文件上传场景

标签 java file-upload selenium-webdriver awtrobot

我也遇到过这种情况 我有一个文件上传场景..这里我无法使用 sendKeys 方法发送文件的绝对路径,因为没有输入元素,我只有一个“浏览”按钮来从本地文件夹中选择文件

因此,为了处理这个问题,我在使用 selenium webdriver 单击“浏览器”按钮后使用机器人类和以下逻辑:

StringSelection sc = new StringSelection(file);                 >>file is the one to upload
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sc, null);
try {
        Robot robot= new Robot();
        robot.delay(3000);
         robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);
         robot.delay(2000);
        robot.keyPress(KeyEvent.VK_CONTROL);    
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL);

        robot.delay(3000);
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

   }

这在 Chrome 和 Firefox 中运行良好...但在 Internet Explorer 11 中则不然 在 IE 中,模型对话框打开,但没有粘贴要上传的文件的路径 有人在 IE 中遇到这个问题吗 我们需要做任何额外的事情才能在 IE 中执行此操作吗 请告诉我

谢谢, 穆萨菲尔

最佳答案

确定在执行任何用户交互操作(鼠标或键盘事件)之前是否要求 IE 窗口具有焦点。此功能默认为 false,但可提供更准确的 native 事件交互。

设置如下所示的功能类型。它对我有用。

capability.setCapability("requireWindowFocus", false);

关于java - 机器人类不适用于 IE 中的文件上传场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31805447/

相关文章:

jquery - IE10 - 选择要上传的文件后必须单击 2 次才能提交表单

Java - 同步方法无法正常工作

java - 捕获 java.lang.ArrayIndexOutOfBoundsException

java - LargeInteger 相当于 BigInteger 的 testBit?

java - 有没有办法使用 har 代理捕获取消的请求?

java - 在 Linux 服务器上运行 selenium 套件

selenium-webdriver - cucumber 在功能文件中的多个场景中给出空指针异常

java - Google Guava 和一个我无法弄清楚的错误

php - $_FILES 表单提交后为空

java - 使用 Ajax 或 JQuery 直接上传文件(带或不带表单)