我正在尝试在项目中自动执行上传文件功能。问题是两个上传按钮使用了相同的ID和名称。
没有任何用户操作会使此元素可见。所以我需要一个解决方法,在元素不可见时点击它。
这是html和我的项目图片的图像:
我的代码:
WebElement fileInput = driver.findElement(By.name("indexPicName"));
String js = "arguments[0].style.height='auto'; arguments[0].type='visible';";
((JavascriptExecutor) driver).executeScript(js, fileInput);
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg");
我遇到了例外 -
org.openqa.selenium.ElementNotVisibleException - 元素不是 目前可见,因此可能无法与之互动。
我尝试过使用JavascriptExecutor
。但无法找到确切的语法。
上传图片时出错:
答案 0 :(得分:0)
如果您想将hidden
框转换为可见text
框,则应使用.setAttribute('type', 'text')
,如下所示: -
WebElement fileInput = driver.findElement(By.id("indexPicName"));
String js = "arguments[0].setAttribute('type', 'text');return arguments[0]";
fileInput = (WebElement)((JavascriptExecutor) driver).executeScript(js, fileInput);
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg");
或者如果您想在sendKeys
元素上file
尝试如下: -
WebElement fileInput = driver.findElement(By.id("indexPic"));
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg");
如果有两个file
输入元素具有相同的ID和名称,并且您想要在第二个元素上传文件,请尝试使用findElements
并使用index to sendKeys,如下所示: -
List<WebElement> fileInputs = driver.findElements(By.id("indexPic"));
fileInputs.get(1).sendKeys("E:\\testUploadPromotion\\16.jpg");
希望它有所帮助.. :)