如何在没有“输入”元素的情况下在 Selenium WebDriver 中上传文件

Thi*_*vam 5 java testing selenium automation selenium-webdriver

我有一个 HTML 页面,带有名为“上传”和 id: 的按钮btn-import-questions。元素:

<button class="btn btn-success btn-sm col-lg-11" id="btn-import-questions" data-ts-file-selector="questions-import-init">  Upload&nbsp;<i class="fa fa-upload"></i></button>
Run Code Online (Sandbox Code Playgroud)

我尝试了这样的 Selenium Java 代码:

driver.findElement(By.id("btn-import-questions")).sendkeys("C:/path/to/file.xlsx");

但由于这是一个上传按钮而不是输入类型元素,所以上面的代码不起作用。

Vis*_*sko 7

检查 DOM 因为某处必须有一个<input type="file">. 网站的 javascript 将调用此元素的 .click() 以弹出文件选择器对话框,并通过选择关闭对话框将提供路径。使用 Selenium 可以通过 .sendkeys() 实现相同的效果:

driver.findElement(By.xpath("//input[@type=\"file\"]")).sendkeys(localFilePath);
Run Code Online (Sandbox Code Playgroud)


ale*_*cxe 3

你做得几乎正确,除了sendKeys()应该在输入上调用,也就是说type="file",在你的情况下很可能是不可见的。如果是这种情况,请首先使该元素可见: