Squish moveMouse返回错误:无法移动鼠标

时间:2018-06-18 15:03:39

标签: squish

我正在使用Squish版本6.3.0 Beta来测试用Qt编写的应用程序(我知道有更新的版本,但目前无法进行升级)。我试图移动鼠标来获取工具提示,但mouseMove命令返回RuntimeError:无法移动鼠标。包装函数是python中的wrienter代码:

(gdb) p std::max⭾
(gdb) p std::max_element<__gnu_cxx::__normal_iterator<int*, std::vector<int, 
 std::allocator<int> > > >(__gnu_cxx::__normal_iterator<int*, std::vector<int, 
 std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, 
 std::allocator<int> > >)

我得到的输出:

def mouse_move(self, object_name, x, y, timeout=None):
try:
    my_obj = waitForObject(object_name, timeout)
    logging.debug("Found object: {0}".format(my_obj.objectName))
    mouseMove(my_obj, x, y)
    logging.debug("Mouse moved to: {object_name}".format(object_name=my_obj.objectName))
except Exception, e:
    logging.error("Error: {0}".format(e))
    ex_type, ex_value, ex_traceback = sys.exc_info()
    trace_back = traceback.extract_tb(ex_traceback)
    stack_trace = list()
    for trace in trace_back:
        stack_trace.append(
                "File : %s , Line : %d, Func.Name : %s, Message : %s" % (trace[0], trace[1], trace[2], trace[3]))
    logging.error("Exception type: {0}".format(ex_type.__name__))
    logging.error("Exception message: {0}".format(ex_value))
    logging.error("Stack trace: {0}".format(stack_trace))

有没有人知道为什么鼠标无法移动?或者我应该检查什么以获得更多信息。

3 个答案:

答案 0 :(得分:1)

如果有人需要,我已经找到了解决mouseMove问题的方法:

        rect = object.globalBounds(my_obj)
        x = rect.center().x
        y = rect.center().y
        QCursor.setPos(x, y)

答案 1 :(得分:0)

如果您只想测试工具提示文本,可以查看&#34;工具提示&#34; Qt对象的属性。 https://kb.froglogic.com/display/KB/Example+-+Getting+A+Tooltip+%28Qt%29

但是,如果您的用例要求您将鼠标移动到窗口小部件并查看工具提示,则可以尝试更改代码中的x,y坐标,或者您也可以选择使用QCursor.setPos ()如下文所述 - https://kb.froglogic.com/display/KB/Article+-+Moving+the+mouse+cursor+yourself

答案 2 :(得分:0)

在构建Squish时,请确保正确配置了Xtst软件包。 我的不是。配置警告我:

Checking whether XTest extension library is available
tmp.cpp:1:34: error: X11/extensions/XTest.h: No such file or directory
tmp.cpp:3: error: ?XTestQueryExtension? was not declared in this scope

安装正确的软件包后,Squish mouseMove(和dragAndDrop操作)将再次运行。