我需要通过硒中的窗口弹出窗口将文本文件上传到我的网页中(通过单击浏览)。
我已经在下面的机器人课程中使用过此功能。
public void uploadFileUsingRobot(String filePath) throws AWTException,Exception{
StringSelection path = new StringSelection(filePath);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(path, null);
Robot r = new Robot();
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_V);
r.keyRelease(KeyEvent.VK_V);
r.keyRelease(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
}
在我当地的情况很好。但是,当我通过bamboo
计划运行它时,它并没有像运行代码中的竹子那样工作headless browser
。
谁能建议我如何上传文件 headless browser
在Bamboo上执行代码时,您可能会使用远程驱动程序。要上传文件,您可以使用sendKeys将filepath设置为文件输入字段,并使用fileDetector。
解:
如果您有文件输入字段
<input id="fileinputfield" type="file">
然后下面的代码将设置文件路径
remoteWebDriver.setFileDetector(new LocalFileDetector());
WebElement input = remoteWebDriver.findElement(By.id("fileinputfield"));
input.sendKeys(filePath);
在这里,您有一篇文章描述解决方案。
您可能遇到的可能的问题:
获取remoteWebDriver。这是您可以尝试的一种方法
RemoteWebDriver remoteWebDriver = (RemoteWebDriver) ((WebDriverFacade) getDriver()).getProxiedDriver();
隐藏(未显示)文件输入字段。如果html是:
<input id="fileinputfield" style="display:none;" type="file">
然后,需要在执行代码设置文件路径时显示它:
JavascriptExecutor js = (JavascriptExecutor) getDriver();
js.executeScript("document.getElementById('filedata').style.display='inline-block';");
// RemoteWebDriver remoteWebDriver = (RemoteWebDriver) ((WebDriverFacade) getDriver()).getProxiedDriver();
// remoteWebDriver.setFileDetector(new LocalFileDetector());
// WebElement input = remoteWebDriver.findElement(By.id("fileinputfield"));
// input.sendKeys(filePath);
js.executeScript("document.getElementById('filedata').style.display='none';");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句