首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用javascript提交文件输入?

如何使用javascript提交文件输入?
EN

Stack Overflow用户
提问于 2018-10-10 21:39:23
回答 2查看 348关注 0票数 0

我在我的应用程序中使用了C# Selenium,我点击文件输入并显示(打开窗口)文件对话框。我需要传递filepath,然后按enter (返回)键。

Requirement:即使当前用户被签出,桌面也被锁定,RDP会话也关闭。

  • Selenium内置的SendKeys根本不起作用。
  • Windows.Forms.SendKeys.SendWait()工作不太灵活,路径提交可以,为了点击enter,进程等待用户会话。努基特-
  • InputSimulator / WinApi - UAC访问被拒绝

有没有可能在不打开javascript对话框的情况下提交文件?

谢谢

使用Selenium的示例

代码语言:javascript
复制
var button = web.FindElementByXPath("//span[@class='upload']");
button.Click();

不工作

代码语言:javascript
复制
button.SendKeys("path"); //not input element
Windows.Forms.SendKeys.SendWait("..."); //not working for closed user session
InputSimulator.SimulateTextEntry("path"); //access denied because of Windows UIPI
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-12 22:38:16

在上面解释的情况下,没有文件类型的HTML输入(参见注释)。单击其他HTML元素后弹出打开文件对话框。将任何字符串传递给该元素都没有成功。

我在c#应用程序中使用的最好也可能是最简单的解决方案是使用AutoIT。

代码语言:javascript
复制
Install-Package AutoItX.Dotnet

点击后调用打开对话框

代码语言:javascript
复制
AutoItX.ControlSend("Open", "", "", _sysPathToTheFile);
AutoItX.ControlSend("Open", "", "", "{ENTER}");

或者,您可以调用

代码语言:javascript
复制
WinActivate(), WinWaitActive()...

但是当窗口处于后台或在我的情况下,使用会话是关闭的、锁定的屏幕和相似的情况下,ControlSend()也工作得很好。

票数 0
EN

Stack Overflow用户

发布于 2022-05-18 14:08:02

如果在dom中有一个文件输入(<input type='file'/>),您可以这样做:

webdriver/#local-file-detector

代码语言:javascript
复制
IWebElement upload = driver.FindElement(/*select the <input> element*/);
upload.SendKeys(filepath); // as string
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52749159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档