【问题标题】:How to browse and upload file through selenium Web driver如何通过 selenium Web 驱动浏览和上传文件
【发布时间】:2013-11-26 06:42:31
【问题描述】:

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

【问题讨论】:

  • 尝试过的代码:Actions ac=new Actions(driver); WebElement fileinput=driver.findElement(By.name("metadata_item")); ac.click(fileinput).perform();

标签: selenium-webdriver


【解决方案1】:

首先检查输入元素是否可见

然后,您不必单击浏览按钮,它会触发一个操作系统级别的对话框并有效地停止您的测试。

为了解决这个问题,请遵循以下代码:

driver.findElement(By.id("myElementId")).sendKeys("<pathToFile>");

myElementId 是该元素(在本例中为按钮)的 id,在 sendKeys 中您必须指定要上传的内容的绝对路径。 Webdriver 将为您完成剩下的工作。

请记住,仅当您发送文件的元素应采用表单时,上传才会起作用

【讨论】:

    【解决方案2】:

    没有 HTML 代码无法回答。 为了单击浏览按钮,将指针放在上一个字段中,即 电子邮件地址字段并使用

        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 工具处理它

    【讨论】:

    • 如果您决定使用 Selenium Hub 远程运行测试,这将不起作用。
    【解决方案3】:

    它可能在另一个框架下。 尝试切换到该框架并单击该元素。 它会起作用的。

    例如 - 如果浏览按钮位于另一个 Id = "frameUpload" 的框架下,则将 webdriver 切换到该框架,如下所示:

    driver.switchTo().frame("frameUpload");
    

    现在像这样点击浏览按钮:

    driver.findElement(By.Id("Id of the button")).click();
    

    点击完成后,您始终可以像这样返回到默认窗口

    driver.switchTo().DefaultContent();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 2015-10-02
      相关资源
      最近更新 更多