为了账号安全,请及时绑定邮箱和手机立即绑定

在 java 中使用 selenium 包含或上传文件

在 java 中使用 selenium 包含或上传文件

芜湖不芜 2022-05-21 20:40:55
<input type="button" class="button white-button custom-modal-button" id="btnAttachment" ng-click="openAttachment()" value="Import CSV template">enter code hereWebElement browse =driver.findElement(By.xpath("//*[@id=\"btnAttachment\"]"));//pass the path of the file to be uploaded using Sendkeys methodbrowse.sendKeys("\\Users\\nilaapps13\\Desktop\\lead.csv");使用 sendkeys 功能时,它会打开上传窗口,但不会选择文件。还有其他方法吗?
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

File file = new File("/users/chennai4/downloads/lead.csv");

            StringSelection stringSelection= new StringSelection(file.getAbsolutePath());

           //Copy to clipboard 

            Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);

            Robot robot = new Robot();

          // 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

            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(1000);

            robot.keyPress(KeyEvent.VK_ENTER);

            robot.keyRelease(KeyEvent.VK_ENTER);

这是我在mac os中完美运行的代码..


查看完整回答
反对 回复 2022-05-21
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

我认为你必须按回车,即使用 sendKeys 发送回车键



查看完整回答
反对 回复 2022-05-21
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

上传窗口是 Windows 弹出窗口,而不是浏览器弹出窗口,因此 selenium 命令在这种情况下不起作用。


您可以使用 java Robot 和 StringSelection 类。第一步:将文件路径复制到系统剪贴板第二步:将文件路径粘贴到上传窗口(发送键Ctrl+V),然后发送回车键。


添加以下软件包


import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.datatransfer.StringSelection;

import java.awt.event.KeyEvent;

使用 StringSelection 类进行复制和粘贴操作。


StringSelection stringSelection = new StringSelection("\\Users\\nilaapps13\\Desktop\\lead.csv");

Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);

使用 Robot 类发送键盘事件


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);


查看完整回答
反对 回复 2022-05-21
  • 3 回答
  • 0 关注
  • 253 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信