【问题标题】:C# Selenium Webdriver Interacting with native image upload dialog using SendKeys.SendWait does not work on TeamCityC# Selenium Webdriver 使用 SendKeys.SendWait 与本机图像上传对话框交互在 TeamCity 上不起作用
【发布时间】:2017-04-20 13:13:33
【问题描述】:

上传图像时,我正在使用 Windows.Forms.SendKeys.SendWait 与本机 Windows 对话框进行交互。

我使用webdriver点击上传按钮,然后去:

SendKeys.SendWait("^A"); //Highlight content so it can be overwritten
SendKeys.SendWait(path);
SendKeys.SendWait(@"{Enter}");

当我在我的 PC 上本地运行它时效果很好,但是,测试不会在 TeamCity 代理上运行(我有许多其他运行正常的测试)。它失败了,因为似乎本机对话框从未出现,或者如果出现,则无法与之交互。

不确定发生了什么,因为整个测试代理进程在后台运行,我看不到它在做什么 - 我可以使用 webdriver 截取屏幕截图,但它无论如何都不会捕获本机对话框。

我尝试配置团队城市测试代理 windows 服务(更改登录设置以允许与桌面交互)但这不起作用。似乎它只是无法与之交互......关于如何使其工作的任何想法?

【问题讨论】:

    标签: winforms selenium selenium-webdriver automation teamcity


    【解决方案1】:

    为了使用 Selenium 上传文件,您应该将 Webdriver 的 SendKeys 直接用于需要路径的输入元素(不是 Forms.SendKeys)。见this example

    注意:您需要避免点击打开对话框的按钮。

    【讨论】:

    • 感谢您的回答和示例链接。似乎这是完成这项工作的唯一方法。 然而我认为这并不是一个好的 UI 测试。用户不会像这样与页面交互。例如,上传按钮可能被破坏,用户可能无法上传照片,但测试仍然可以通过。
    • 你说得有道理,但你的选择是始终让用户登录并解锁屏幕,并将你的团队城市代理更改为作为进程而不是服务运行...
    • 这是真的 - 不值得努力。在我的测试中,我首先检查上传按钮是否至少可见并启用然后继续您的解决方案。它适用于teamcity!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 2014-12-30
    • 1970-01-01
    • 2013-11-09
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多