java - 文件上传无法通过java代码在jenkins中工作

标签 java selenium jenkins selenium-webdriver

我正在使用以下代码将文件上传到应用程序

String fileUploadPath = System.getProperty("user.dir") + File.separator
    + "UploadPdfFile" + File.separator;

File file = new File(fileUploadPath);
File[] files = file.listFiles();
String name = null;
for (File f : files) {
    System.out.println(f.getName());
    name = f.getName();
}

// Copy your file's absolute path to the clipboard
StringSelection ss = new StringSelection(fileUploadPath + name);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(ss, null);

Robot robot = new Robot();
robot.delay(250);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
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.delay(150);
robot.keyRelease(KeyEvent.VK_ENTER);

上面的代码在我的本地计算机上运行,​​但是当我尝试在位于不同 Windows 计算机的 Jenkins 中运行相同的代码时失败, 我并没有低估它失败的原因。

详细信息:

  • 操作系统= Windows 10
  • 语言=java
  • Selenium 版本 = 3.141.5
  • Jenkins 版本= 2.190.2
  • java版本=8

可以帮忙吗?

谢谢

最佳答案

enter image description here

我的上传文件DOM结构如上图所示: 由此我创建了独特的 x 路径,包括“输入”标签。

x路径如下:

x-path=> "//span[@class='ant-upload']/input"

注意:必须在 xpath 中包含“input”标签。

之后我使用了 WebDriver 默认方法,这对我有用。

   String FileUploadPath = System.getProperty("user.dir")+ File.separator
    + "UploadFile"+ File.separator + "UploadFile.png";      
WebElement uploadElement = 
                driver.findElement(By.xpath("//span[@class='ant-upload']/input"));
  uploadElement.sendKeys(FileUploadPath);

这样我就可以成功上传文件了。

观察: Jenkins正在 headless 模式下运行,因此它不会打开任何文件上传弹出窗口,因此我之前的代码(在问题部分中询问)失败,现在使用上面的代码(在答案部分中给出)弹出窗口将不会出现,它将直接上传文件。

关于java - 文件上传无法通过java代码在jenkins中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59646554/

相关文章:

java - slider 与进度条 JavaFX 的混合

java - Selenium-Java Webdriver : I am getting error as Element should have been "select" but was "input" when i select the value form dropdown box

eclipse - Chrome 浏览器未使用 Selenium 加载网页

java - 是否有任何关于 Jenkins 的 Pipeline 插件套件(内部)结构如何的文档?

plugins - 在 Jenkins 构建插件中获取作业存储库 URL

java - 如何在 jenkins 插件中包含针对 JDK 1.8 的依赖项?

Java 源代码解析器/生成器

java - Eclipse RCP 文件资源管理器

java - SwingEventMonitor 发生了什么?

python - 如何在 Python WebDriver 中等待 CSS 和 XPath 选择器的组合?