0

我正在为应用程序自动进行 UI 测试,并且在 Windows 上的菜单项遇到问题。Fwiw,我让它在 Mac 上为姐妹应用程序工作。我正在使用 Python 中的 Appium。

我可以使用 Inspect.exe 找到菜单树,单击顶级菜单,然后打开下拉菜单,在这里我找到菜单项,我想单击,但 WinAppDriver 失败并出现以下错误: {"status":105,"value":{"error":"element not interactable","message":"An element command could not be completed because the element is not pointer- or keyboard interactable."}}

下面的python重现了这个问题。

import time
import unittest
from appium import webdriver

app_exe_path = "C:\\Program Files\\Phase One\\Capture One 12\\CaptureOne.exe"
menu_name = "Select"
menu_item_name = "First"
switch_window = True
# app_exe_path = "C:\\Windows\\Notepad.exe"
# menu_name = "File"
# menu_item_name = "Open..."
# switch_window = False


class ClickApplicationMenuItem(unittest.TestCase):
    def test_click_application_menu_item(self):
        driver = webdriver.Remote(
            command_executor="http://localhost:4723",
            desired_capabilities={"app": app_exe_path},
        )
        if switch_window:
            time.sleep(5) # non-optimal code for the sake of a simple repro
            handles = driver.window_handles
            driver.switch_to.window(handles[0])
        menu = driver.find_element_by_name(menu_name)
        menu.click() # fails in the Notepad case
        item = menu.find_element_by_name(menu_item_name)
        item.click() # fails in the CaptureOne case


if __name__ == "__main__":
    unittest.main()

关于如何单击菜单项的任何建议?

4

2 回答 2

1

这是最终为菜单项工作的内容(我保留了menu.click()适用于应用程序的内容,我正在测试):

   from selenium.webdriver.common.action_chains import ActionChains
   actions = ActionChains(driver)
   actions.click(item)
   actions.perform()
于 2019-05-21T09:10:30.527 回答
0

由于您能够找到这些元素,我假设您可以访问它们的属性。一个简单的解决方法是单击元素坐标而不是单击元素本身。通常,单击坐标是一个坏主意,但由于您从元素本身获取坐标,我认为这里没有问题。

尝试这样的事情:

menu = driver.find_element_by_name(menu_name)
driver.Mouse.Click(menu.coordinates)
item = menu.find_element_by_name(menu_item_name)
driver.Mouse.Click(item.coordinates)

我确实收到了一个警告,鼠标功能已过时,应该使用Actionsor类。ActionBuilder您也可以探索这些选项,但我在 winappdriver 的 github 页面上发现了一个关于该类的问题,该问题已于 2018 年 3 月关闭Actions。目前尚不清楚它为什么关闭。您可以找到另一种单击坐标的方法。

资源: Actions问题

于 2019-05-10T07:40:57.453 回答