问题描述 :对于按钮式的文件上传,输入框input都是隐藏在按钮里面,无法直接输入文件路径进行上传操作。
解决思路 :将浏览器的driver转化为JavascriptExecutor类型的driver,通过js的方法修改input框的属性是使之显示出来,然后使用sendKeys方法传入文件路径就可以进行文件上传操作了。
代码演示如下:
1.定位文件上传的输入框input
@FindBy(xpath = "//span[text()='上传图片和文件']/../../input")
private WebElement uploadImgInput;
2.操作的定位的元素的方法
public void upload(String path) {
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].setAttribute('style', arguments[1])",
uploadImgInput, "display: block;");
scrollToElement(uploadImgInput);
try {
Thread.sleep(1 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
uploadImgInput.sendKeys(new File(path).getAbsolutePath());
}
网友评论