Squish 激活菜单项函数

0 投票
2 回答
1242 浏览
提问于 2025-04-18 13:33

我接手了一段关于“squish”的代码,但对这个程序几乎没有任何指导,只能在网上找一些资料,所以这可能是个简单的问题...

我有一个叫做delete_fixture的函数,下面会提到一个叫activateMenuItem的函数... 现在的问题是,编辑菜单被点击了,但似乎没有点击其他任何东西,也没有弹出关于删除的提示框,而这正是测试的目的。我只是想知道有没有人能看到明显的错误,或者能给我一些指导。

def delete_fixture(name, confirm=True):
   click_data_tab("Fixtures")
   click_fixture(name)
   activateMenuItem("Edit", "Delete")
   if confirm:
       mouseClick(waitForObject("{text='OK' type='QPushButton' visible='1'}"))
   else:
       mouseClick(waitForObject("{text='Cancel' type='QPushButton' visible='1'}"))


def activateMenuItem(*menuPath):
   snooze(1)
   menu = "{type='QMenuBar' visible='true'}"
   parent = "{name='MainWindow' type='MainWindow'}"
   try:
       waitForObject(parent)
       for item in menuPath[:-1]:
           activateItem(waitForObjectItem(menu, item))
           menu = "{title='%s' type='QMenu' visible='1' window=%s}" % (item, parent)
           parent = menu
       activateItem(waitForObjectItem(menu, menuPath[-1]))
   except LookupError as e:
       test.log("Unable to find main window: %s" % HOST_NAME)
       raise LookupError("%s -- %s" % (HOST_NAME,e))

2 个回答

0

activateMenuItem 这个函数似乎是希望 menuPath 是一个列表,但它却 解包了参数

试着把

def activateMenuItem(*menuPath):

改成

def activateMenuItem(menuPath):
1

试着把*menu_path的第一个参数当作一个对象来用,比如:menu_bar,然后其他的参数用字符串形式传入。这对我有效。

撰写回答