如何在自动化的无头浏览器中通过弹出窗口将文件上传到Web浏览器(Selenium WebDriver)

Lakshmipathi G:

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

我已经在下面的机器人课程中使用过此功能。

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

在这里,您有一篇文章描述解决方案。

您可能遇到的可能的问题:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过拒绝Selenium Webdriver中的弹出窗口来关闭浏览器

Safari浏览器:Selenium Webdriver异常

如何使用Java调整Selenium WebDriver中当前浏览器窗口的大小?

Selenium无头浏览器WebDriver [Errno 104]对等重置连接

在Webdriver中启动Chrome浏览器

如何在Cucumber + Selenium Webdriver + Page-Object中重新启动浏览器?

我如何在谷歌浏览器中运行这个 python+ selenium webdriver 代码?

如何让 selenium webdriver 停止打开浏览器?

如何使用硒webdriver在mozilla和chrome浏览器中处理“地理位置”弹出窗口?

我们可以在python selenium webdriver中缩放浏览器窗口吗?

如何通过保持webDriver处于活动状态来关闭整个浏览器窗口?

如何在Python中使用Selenium在由不同WebDriver打开的不同Chrome浏览器窗口之间切换?

如何在Java中使用TestNG Selenium Webdriver在多个类中使用同一浏览器窗口?

我们可以使用 Selenium Webdriver 自动化在移动浏览器(不是移动应用程序)上运行的应用程序吗

在Selenium Webdriver中实例化chrome浏览器的步骤是什么?

使用Selenium WebDriver和JUnit在浏览器中拖放本地文件?

有什么办法可以将已经运行的浏览器附加到Java中的Selenium Webdriver?

使用浏览器版本的webdriver

无法切换到主窗口内的浏览器窗口。(Selenium Webdriver)

如何使用Java在Selenium Webdriver中的2个浏览器之间切换

使用Selenium WebDriver Java绑定清除浏览器Cookies

Selenium Python 浏览器=webdriver.Firefox() 错误

PHP Selenium Webdriver读取浏览器输出

使用Java使用Selenium WebDriver捕获浏览器日志

无法使用 selenium webdriver 启动 Chrome 浏览器

根据selenium webdriver,浏览器的本机支持是什么

使用Selenium WebDriver运行TOR浏览器

无法使用 Selenium Webdriver 启动 IE 浏览器

Selenium WebDriver 连接到 Kameleo 浏览器