专栏名称: Linux中国
十万级技术订阅号,依托于『Linux中国』(https://linux.cn/)社区,专注于 Linux 学习、技术研究、开源思想传播。
目录
相关文章推荐
Linux就该这么学  ·  330 个 “ 假补丁 ” ... ·  9 小时前  
Linux就该这么学  ·  Steam 客户端 Beta 更新:告别 ... ·  9 小时前  
Linux就该这么学  ·  开源虚拟软件 VirtualBox ... ·  昨天  
Linux就该这么学  ·  Rocky Linux 9.6 发布:新推 ... ·  昨天  
Linux就该这么学  ·  34 岁程序员日均点 2.5 ... ·  2 天前  
51好读  ›  专栏  ›  Linux中国

用 C 语言对 Gtk+ 应用进行功能测试

Linux中国  · 公众号  · linux  · 2017-10-14 13:40

正文

请到「今天看啥」查看全文


  • if ( start_time . tv_sec + timeout -> tv_sec < current_time . tv_sec ){

  • break ;

  • }

  • }

  • ttt_functional_test_util_reaction_time ();

  • }

  • 与图形化用户界面交互

    为了模拟用户交互的操作, Gdk 库 [1] 为我们提供了一些需要的函数。要完成我们的工作,我们只需要如下 3 个函数:

    gdk_display_warp_pointer()
    gdk_test_simulate_button()
    gdk_test_simulate_key()

    举个例子,为了测试按钮点击,我们可以这么做:

    1. gboolean

    2. ttt_functional_test_util_button_click(GtkButton *button)

    3. {

    4.   GtkWidget *widget;

    5.   GdkWindow *window;

    6.   gint x, y;

    7.   gint origin_x, origin_y;

    8.   if(button == NULL ||

    9.      !GTK_IS_BUTTON(button)){

    10.     return(FALSE);

    11.   }

    12.   widget = button;

    13.   if(!GTK_WIDGET_REALIZED(widget)){

    14.     ttt_functional_test_util_reaction_time_long();

    15.   }

    16.   /* retrieve window and pointer position */

    17.   gdk_threads_enter();

    18.   window = gtk_widget_get_window(widget);

    19.   x = widget->allocation.x + widget->allocation.width / 2.0;

    20.   y = widget->allocation.y + widget->allocation.height / 2.0;

    21.   gdk_window_get_origin(window, &origin_x, &origin_y);

    22.   gdk_display_warp_pointer(gtk_widget_get_display(widget),

    23.                            gtk_widget_get_screen







    请到「今天看啥」查看全文