在Windows文件对话框中发送按键

4

我想将字符串ABC发送到Windows文件对话框的输入字段中。通过这条代码,我可以将焦点设置到正确的元素上。我看到有一个闪烁的光标。

var filedialogOverlay = drv.SwitchTo().ActiveElement();

但是下面的代码没有将字符串写入元素中。
Thread.Sleep(1000);
filedialogOverlay.SendKeys("ABC");

编辑: 网站显示了我想要测试的文件上传提示。由于黑盒测试,我无法查看源代码。是否有一种工具可以分析GUI?

当我右键单击输入元素时,会出现以下选择。

enter image description here


如果您的意思是像http://www.cumc.columbia.edu/it/howto/remote/img/dnuploadfile25.jpg的文件上传提示,那么您的代码将无法工作。`drv.SwitchTo().ActiveElement();`允许您切换到当前聚焦的元素,例如具有光标内部的文本输入字段......要上传文件,您需要将文件路径发送到`<input type="file">`元素。 - Andersson
1
方法 ActiveElement() 返回页面中的活动元素而不是文件对话框。Selenium 不支持文件对话框,但它支持通过在 <input type="file"> 元素上直接调用 Sendkeys 来上传文件。 - Florent B.
1
@Florent B. 你能在回答中展示完整的代码吗? - kame
2个回答

3

抱歉回复晚了,你可以参考这个链接:link - Viet Pham

1
如果您需要上传文件,请尝试直接将文件路径发送到相应的输入字段:
drv.FindElement(By.XPath("//input[@type='file']")).SendKeys("ABC");

附注:如果页面上有多个文件上传输入字段,则可能需要更具体的 XPath,例如 "//input[@id='some_specific_file_upload']"...


但是我怎么获得输入字段的名称呢?我的意思是从“Windows”中的标准对话框覆盖层。 - kame
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Andersson
我没有机会看到代码。我是一个黑盒测试员。有没有分析GUI的工具? - kame
您可以通过浏览器轻松检查 HTML。只需右键单击所需的网页元素,然后选择类似于“检查元素”的选项即可。 - Andersson
不要左键单击上传按钮以打开文件上传对话框。右键单击位于页面上的上传按钮。 - Andersson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接