我正在尝试通过selenium webDriver上传文件,但selenium会提供error:Unable to locate element
。我已经使用所有方法来查找元素并单击浏览但不会发生任何单击。
HTML为<input type="file" onmousedown="this.blur();" onclick="//this.blur();" onchange="$('file-loader').show(); this.form.submit();" name="metadata_item" id="metadata_item">
答案 0 :(得分:3)
首先检查输入元素是否可见
然后,您不必单击浏览按钮,它将触发操作系统级别对话框并有效地阻止您的测试死亡。
为了解决这个问题,请遵循以下代码:
driver.findElement(By.id("myElementId")).sendKeys("<pathToFile>");
myElementId是该元素的id(在本例中为按钮),在sendKeys中,您必须指定要上载的内容的绝对路径。 Webdriver将为您完成剩下的工作。
请注意,上传仅适用于您发送文件的元素应采用
格式答案 1 :(得分:0)
没有HTML代码就无法回答。 为了点击Browse按钮,将指针放在前一个字段中,即 电子邮件地址字段并使用
Robot robot=new Robot();
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
然后显示系统弹出窗口,然后使用AutoIT工具处理它
答案 2 :(得分:0)
它可能属于另一个框架。 尝试切换到该框架并单击该元素。 它会起作用。
例如 - 如果浏览按钮位于另一个具有Id =“frameUpload”的帧下,则将webdriver切换到该帧,如下所示:
driver.switchTo().frame("frameUpload");
现在点击这样的浏览按钮:
driver.findElement(By.Id("Id of the button")).click();
完成点击后,您可以随时返回默认窗口
driver.switchTo().DefaultContent();