You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#结合Selenium使用AutoIt上传文件时路径错误、键入速度过快如何解决

问题根因

你对AutoItX3.Send()方法的第二个参数理解有误,这个参数是标志位参数,仅接受0/1两个枚举值,作用是控制特殊字符是否转义,并不是用来设置键入延迟的,所以你设置787000完全不生效,键入速度还是默认值。

解决方案

方法1:设置全局键入延迟(适配模拟键入场景)

AutoIt提供了单独的配置方法设置全局键入间隔,在调用Send之前先配置SendKeyDelay参数即可,单位是毫秒,数值越大键入越慢:

autoIt = new AutoItX3();
// 配置每个按键之间的间隔,可根据实际情况调整数值
autoIt.AutoItSetOption("SendKeyDelay", 100);
// 可选配置:按键按下后的保持时长,避免系统识别不到按键输入
autoIt.AutoItSetOption("SendKeyDownDelay", 20);

autoIt.WinActivate("Farklı Kaydet");
Thread.Sleep(1000);

autoIt.Send(AppDomain.CurrentDomain.BaseDirectory + @"video" + @"\" + textBox7.Text, 0);
autoIt.Send("{ENTER}");

方法2:直接给输入框赋值(优先推荐,完全避免输入错误)

不需要模拟键盘输入整个路径,AutoIt可以直接给文件选择窗口的文件名输入框赋值,一步到位不会因为键入速度、窗口失焦、特殊字符等问题出错:

autoIt = new AutoItX3();
autoIt.WinActivate("Farklı Kaydet");
Thread.Sleep(1000);

string fullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "video", textBox7.Text);
// 直接给文件选择窗口的文件名输入控件设置内容,Edit1是通用文件选择框的输入控件ID,可通过AutoIt窗口信息工具确认你当前窗口的控件ID
autoIt.ControlSetText("Farklı Kaydet", "", "Edit1", fullPath);
autoIt.Send("{ENTER}");

方法3:逐字符输入(极端场景备用)

如果必须模拟手动键入的效果,也可以自行拆分路径字符,每个字符输入后加固定延迟:

autoIt = new AutoItX3();
autoIt.WinActivate("Farklı Kaydet");
Thread.Sleep(1000);

string fullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "video", textBox7.Text);
foreach (char c in fullPath)
{
    autoIt.Send(c.ToString());
    Thread.Sleep(50); // 可自行调整间隔时长
}
autoIt.Send("{ENTER}");

内容的提问来源于stack exchange,提问作者Yavuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:06:03