gpt4 book ai didi

c# - 使用任务计划程序并且用户已注销时如何找到 AutomationElement?

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:30 24 4
gpt4 key购买 nike

我有一个应用程序设置为在一天中的特定时间当用户注销时运行。它使用 C# 中的 Selenium 和 UI Automation 的组合,每天下载一个文件。运行登录时,一切正常。但是,当我通过任务调度程序运行应用程序时,它在尝试查找 AutomationElement 时失败了。

我从以下 PropertyConditions 开始:

 PropertyCondition browserProp=new PropertyCondition(AutomationElement.NameProperty,"Website 1- Mozilla Firefox",PropertyConditionFlags.IgnoreCase);
PropertyCondition saveDiagProp= new PropertyCondition(AutomationElement.NameProperty,"Opening File.xls",PropertyConditionFlags.IgnoreCase);
PropertyCondition saveRadioBut = new PropertyCondition(AutomationElement.NameProperty, "Save File", PropertyConditionFlags.IgnoreCase);
PropertyCondition okBut= new PropertyCondition(AutomationElement.NameProperty, "OK", PropertyConditionFlags.IgnoreCase);

最初,我试图通过

找到“桌面”根元素
 AutomationElement aeDesktop =AutomationElement.RootElement;

但是,我的研究让我相信,当应用程序以这种方式运行时,实际上并没有创建桌面。我还仔细检查了注册表中的 NoInteractiveServices 是否设置为 false,然后通过 Selenium 截取屏幕截图以确保 Web 自动化正常工作 - 它是。

我仔细检查了 RootElement,通过以下代码将 RootElement 的所有 TreeScope.Children 写入日志文件

AutomationElementCollection desktopChildren =   aeDesktop.FindAll(    TreeScope.Children, Condition.TrueCondition); 
foreach(AutomationElement ae in desktopChildren)
{
System.IO.File.AppendAllText(downloadLocation + "errorlog.txt", "RootChild [" +x+"] "+ ae.Current.Name + Environment.NewLine);
x++;
}

什么也没有出现。

然后我尝试从进程句柄中查找 AutomationElement。

var process = Process.GetProcessesByName("firefox").First();
AutomationElement aeDesktop = AutomationElement.FromHandle(process.Handle);

再一次,什么都没有。

我一直在尝试寻找某种 AutomationElement 来“ Hook ”,这样我就可以开始搜索那个保存对话框了。很想知道你们的想法、任何建议、提示或“嘿,伙计——你做错了!”提前致谢!

最佳答案

所以这不是一个完整的答案,而是针对我的具体情况的答案,而不是我在上面提出的一般性问题。

Access to file download dialog in Firefox

关于c# - 使用任务计划程序并且用户已注销时如何找到 AutomationElement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28975506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com