gpt4 book ai didi

java - 如何通过自动化 headless 浏览器中的窗口弹出窗口将文件上传到网络浏览器(selenium webdriver)

转载 作者:行者123 更新时间:2023-11-30 10:15:46 25 4
gpt4 key购买 nike

我需要通过 selenium 中的窗口弹出窗口将文本文件上传到我的网页(通过单击浏览)。

我已经使用下面的机器人类来做到这一点。

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 计划运行它时,它不像 bamboo 在 headless browser 中运行代码那样工作。

任何人都可以建议我如何在 headless browser 中上传文件

最佳答案

当您在 bamboo 上执行代码时,您可能会使用远程驱动程序。要上传文件,您可以使用 sendKeys 将文件路径设置为文件输入字段并使用 fileDetector。

解决方案:

如果你有文件输入框

<input id="fileinputfield" type="file">

然后下面的代码将设置文件路径

remoteWebDriver.setFileDetector(new LocalFileDetector());
WebElement input = remoteWebDriver.findElement(By.id("fileinputfield"));
input.sendKeys(filePath);

Here you have an article描述解决方案。

您可能遇到的问题:

  1. 正在获取 remoteWebDriver。这是您可以尝试的一种方法

    RemoteWebDriver remoteWebDriver = (RemoteWebDriver) ((WebDriverFacade) getDriver()).getProxiedDriver();
  2. 隐藏(不显示)文件输入字段。如果 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';");

关于java - 如何通过自动化 headless 浏览器中的窗口弹出窗口将文件上传到网络浏览器(selenium webdriver),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50331857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com