如何在不使用 autoit 且仅使用 selenium 和 java 的情况下上传文件?
How to upload a file without using autoit and with only using selenium and java?
这是文件上传不起作用的按钮检查元素
<button class="btn btn-success text-capitalize" id="ac-btn-imprt" type="button">Browse File</button>
所以当我尝试发送密钥时,它不起作用,因为对于发送密钥,它必须是输入标签,在我的例子中是 type=button
。
提前致谢。
备注
我正在使用带有 java 的 selenium 来自动化我的应用程序。
我使用过间歇性工作的机器人 class,我无法调试机器人 class 实现,因为我还没有使用它。
如果您使用 RemoteWebDriver,请将 LocalFileDetector 添加到驱动程序:
driver.setFileDetector(new LocalFileDetector());
在HTML中找到隐藏的<input type="file">
并发送密钥到文件的绝对路径。
您可以找到的详细信息:
How to upload file using Selenium WebDriver in Java
您可以使用 ROBOT API jar 上传文件。
只需触发浏览按钮,当您需要提供要上传的文件的位置时,使用 Robot API 发送位置,然后再次使用 Robot API 按下回车键。
try {
//Setting clipboard with file location
setClipboardData(fileLocation);
//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);
} catch (Exception exp) {
exp.printStackTrace();
}
这是文件上传不起作用的按钮检查元素
<button class="btn btn-success text-capitalize" id="ac-btn-imprt" type="button">Browse File</button>
所以当我尝试发送密钥时,它不起作用,因为对于发送密钥,它必须是输入标签,在我的例子中是 type=button
。
提前致谢。
备注
我正在使用带有 java 的 selenium 来自动化我的应用程序。
我使用过间歇性工作的机器人 class,我无法调试机器人 class 实现,因为我还没有使用它。
如果您使用 RemoteWebDriver,请将 LocalFileDetector 添加到驱动程序:
driver.setFileDetector(new LocalFileDetector());
在HTML中找到隐藏的<input type="file">
并发送密钥到文件的绝对路径。
您可以找到的详细信息:
How to upload file using Selenium WebDriver in Java
您可以使用 ROBOT API jar 上传文件。 只需触发浏览按钮,当您需要提供要上传的文件的位置时,使用 Robot API 发送位置,然后再次使用 Robot API 按下回车键。
try {
//Setting clipboard with file location
setClipboardData(fileLocation);
//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);
} catch (Exception exp) {
exp.printStackTrace();
}