首页 > 解决方案 > 是否可以通过锚标签上传带有硒的文件?

问题描述

我有一个上传文件按钮,如下所示:<a href="javascript:void('');"></a>

尝试使用sendKeys()方法通过它上传文件。但我得到错误cannot focus on element。是否有解决方法或上传带有<a>标签的文件的方法?

我用这个:

driver.findElementsByXPath("//a[@title='Upload an image']").get(0).sendKeys(System.getProperty("user.dir") + "\files\image.jpg");

还尝试了 to click()moveToElement(element).build().perform()to 专注于元素。

标签: javaseleniumselenium-webdriverfile-uploadanchor

解决方案


,不可能通过<a>标签上传带有硒的文件。

文件上传通过以下方式实现:

  • <input>标签。
  • 这些标签在被任何字符序列<input>填充之前需要焦点

相反,

  • 标签的属性如下<a>

    • charset:定义链接文档的字符编码。
    • coords:指定适合于形状属性的坐标以定义图像映射的图像区域
    • href:指定页面的 URL 或链接指向的锚点的名称。
    • hreflang: 目标 URL 的语言代码。
    • name:标记链接跳转到的页面区域。
    • rel: 描述当前文档和目标 URI 之间的关系。
    • rev:指定目标 URL 和当前文档之间的关系。
    • shape:指定图像映射的形状。
    • target: 在哪里打开目标 URL。
    • type:指定目标 URL 的 MIME(多用途 Internet 邮件扩展)类型
    • accesskey:访问键(或快捷键)。
    • class:文档范围的标识符。
    • dir:指定文本的方向。
    • id:文档范围的标识符。
    • tabindex:帮助确定用户在页面上的元素之间“跳动”时的跳动顺序。
    • title:指定与元素关联的标题。
    • style: 有助于包含内联 casecadubf 样式表。
    • lang:设置语言代码。
  • 标签的事件属性<a>如下:

    • onfocus:当元素获得焦点时脚本运行。
    • onblur:当元素失去焦点时脚本运行。
    • onclick:当鼠标点击时脚本运行。
    • ondblclick:当鼠标双击时脚本运行。
    • onmousedown:当按下鼠标按钮时脚本运行。
    • onmouseup: 释放鼠标按钮时脚本运行。
    • onmouseover:当鼠标指针移动到元素上时脚本运行。
    • onmousemove:当鼠标指针移动时脚本运行。
    • onmouseout:当鼠标指针移出元素时脚本运行。
    • onkeypress:当按键被按下和释放时脚本运行。
    • onkeydown:按下键时脚本运行。
    • onkeyup:释放键时脚本运行。

因此,理想情况下,<a>标签也应该能够接收焦点

但是,正如您看到的错误...不能专注于元素...这可能是由于其他因素超出了这个问题的范围。

结论

文件上传只能通过<input>标签完成。

参考


推荐阅读