【问题标题】:WinAppDriver, clickOnce application launches a dialog - issues finding the appWinAppDriver,clickOnce 应用程序启动一个对话框 - 查找应用程序的问题
【发布时间】:2021-05-15 08:08:12
【问题描述】:

我正在研究使用 Python 和 WinAppDriver 来自动化 clickonce 应用程序。 当应用程序启动时,我会在屏幕上看到一个带有“是”和“否”按钮的对话框。

from appium import webdriver

class TestStuff(unittest.TestCase):

    @classmethod

    def setUpClass(self):
        #set up appium
        desired_caps = {}
        desired_caps["app"] = r"<path to .appref-ms>"
        self.driver = webdriver.Remote(command_executor='http://127.0.0.1:4723',desired_capabilities= desired_caps)            

    @classmethod
    def tearDownClass(self):
        self.driver.quit()

    def test_initialize(self):
        self.driver.find_element_by_name("No").click()

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TestStuff)
    unittest.TextTestRunner(verbosity=2).run(suite)

现在,当我运行这个脚本时,我看到我的应用程序启动了 - 但几秒钟后,我收到一个错误 **Failed to locate open application window with appId: **

不确定这是否是一个问题,因为对话框首先启动,而不是应用程序?但是谁能建议任何其他方式来附加到正在运行的应用程序?

【问题讨论】:

  • 我注意到的另一件事(这也是在 C# 版本上)是我在 WinAppDriver 窗口上收到 HTTP 500 错误。另外 - 正在寻找的 appId 是应用程序的完整路径 - 这肯定永远不会是 id?

标签: python winappdriver


【解决方案1】:

经过一番挖掘,我想我发现了问题所在 - 这是为了帮助以防其他人进入这个泡菜。

首先,我发现有几个地方说不支持 ClickOnce 应用程序。

所以我决定放弃执行 appref-ms 并放入一个 .exe

这可行,但是当我单击任何按钮时会引发 .NET 错误。

从命令行启动应用程序也可以,我不知道为什么。

所以我回到命令行并尝试像代码一样使用完全限定的路径启动我的应用程序 - 单击一个按钮,.NET 错误。

事实证明,您还需要添加“appWorkingDirectory”功能。另外(这是我的误解)你需要在启动器中保留完整路径 - 我想既然我已经设置了工作目录,我可以只输入 exe 名称 - 这是错误的。)

【讨论】:

    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多