【问题标题】:File Upload Feature using Selenium and java使用 Selenium 和 java 的文件上传功能
【发布时间】:2013-05-10 11:37:35
【问题描述】:

我需要在 Web 控制台中自动执行文件上传功能,为此我使用 selenium 和 java。 我尝试了多种方法,但是当我单击上传按钮并打开 Windows 资源管理器时,它停在那里。 不选择任何文件...并给出没有文件的错误.. 我在 firefox 和 chrome 中都试过了,但我无法解决这个问题。

然后我也尝试了 AutoIt 工具。我下载了它并制作了一个脚本。尝试编译我的脚本时出现此错误:

我正在使用的代码:

WebDriver driver = new FirefoxDriver(); 
driver.get("localhost:8080/page"); 
WebElement selectUploadApk = driver.findElement(By.id("id of upload button"));
selectUploadApk.click();
WebElement file = driver.findElement(By.xpath("//input[@type='file']")); 
file .sendKeys("path of the file");

错误:无法执行 upx.exe 压缩存根文件 找不到文件异常

请帮忙

提前感谢

梅加

【问题讨论】:

  • 如果我们看不到代码,我们无法帮助您。
  • 嗨,我正在使用的代码看起来像这样 WebDriver driver = new FirefoxDriver(); driver.get("localhost:8080/page"); WebElement selectUploadApk = driver.findElement(By.id("上传按钮的id")); selectUploadApk.click(); WebElement file = driver.findElement(By.xpath("// input[@type='file']")); file .sendKeys("文件路径");
  • 我猜你不应该打开对话...在你点击之前//input[@type='file']是否存在?
  • 在 Windows 资源管理器中选择文件已完成...Windows 资源管理器已打开..但它没有选择我的文件..//input[@type='file'] 已选择文件..然后通过sendkeys我正在输入路径..我不知道它是否正确..但我尝试了多种方法..仍然没有任何效果

标签: java selenium webdriver


【解决方案1】:

您无需单击该字段即可打开对话框。

打开对话框就是“破坏”你的测试。

只需照原样将键直接发送到输入元素,然后单击哪个按钮是“上传”按钮。

  driver.findElement(By.xpath("//input[@type='file']")).sendKeys("/path/to/file");
  driver.findElement(By.id("id of upload button")).click();

【讨论】:

  • 嘿thanx 它现在正在工作...至少上传文件..但没有关闭 Windows 资源管理器弹出窗口.. 谁能帮我..
  • 所以要澄清当您单击upload 按钮时会打开资源管理器窗口?因此,按照我之前所说的,它将路径发送到input 元素,然后单击upload。按预期开始上传,但仍会打开资源管理器窗口?
  • Yes.. 它会上传文件但不会关闭 Windows 资源管理器弹出窗口。这进一步在循环中产生问题,并且不会转到下一个要附加的文件并给出异常。我正在尝试 javascript 代码以关闭该弹出窗口..但它不起作用...
  • 嗯,据我所知,这是不寻常的做法。至少在我的所有其他情况下,只有当用户单击 input 元素或 upload 元素(如果尚未设置路径)时,资源管理器窗口才会打开。你能提供一些相关的 HTML 吗?希望这会给我一个线索,谢谢。
  • 你需要一个 .perform() 在你的 .click() stackoverflow.com/questions/16597588/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2013-11-08
  • 2013-12-14
  • 1970-01-01
  • 2011-08-02
  • 2013-03-21
  • 1970-01-01
相关资源
最近更新 更多