如何通过selenium Web驱动程序浏览和上传文件

时间:2013-11-26 06:42:31

标签: selenium-webdriver

我正在尝试通过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">

3 个答案:

答案 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();