java - 是否可以通过锚标签上传带有硒的文件?
问题描述
我有一个上传文件按钮,如下所示:<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 专注于元素。
解决方案
不,不可能通过<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>
标签完成。
参考
推荐阅读
- c++ - 避免将转换运算符复制到基类的子集
- python - pylint R1720: Unnecessary "elif" after "raise" (no-else-raise)
- windows-10 - 运行 datadog 命令时访问被拒绝
- java - 为什么`javac -cp`不需要`.`,而`java -cp`需要?
- ios - 当服务器远离时,AVPlayer 流式传输时间过长
- c# - CS0103 C# 当前上下文中不存在名称“ViewBag”和“Url”
- sql - 如何识别安装和删除应用程序的用户 - 如何在新架构中使用 UNNEST
- assembly - 如何在我的汇编代码的特定位置使用 INCLUDE 命令?
- java - 将 Spring Dispatcher Servlet 路径转换为 ZuulServlet
- bitbucket - 我们可以在 Bitbucket CI/CD 管道中配置审批流程吗