Произошла ошибка после изменения раскрывающегося списка со списком при использовании LDTP для тестирования пользовательского интерфейса - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь использовать LDTP v3.5.0 для Python для тестирования моего приложения Gtk + -2.0 в Fedora.
В пользовательском интерфейсе моего приложения раскрывающийся список некоторых элементов управления поля со списком будет изменен накод в соответствии со значением некоторых других элементов управления.
LDTP работает нормально, пока не будет изменен раскрывающийся список со списком.

Чтобы упростить задачу, я написал следующее простое приложение.

#include <gtk/gtk.h>

GtkWidget* combobox;
GtkWidget* button1;
GtkWidget* button2;
int optCount = 0;

void on_clicked(GtkButton* button, gpointer user_data)
{
  while (optCount > 0) {
    gtk_combo_box_text_remove((GtkComboBoxText*)combobox, 0);
    optCount--;
  }

  if (button == (GtkButton*)button1) {
    gtk_combo_box_append_text((GtkComboBox*)combobox, "Option 1");
    gtk_combo_box_append_text((GtkComboBox*)combobox, "Option 2");
    optCount = 2;
  }
  else if (button == (GtkButton*)button2) {
    gtk_combo_box_append_text((GtkComboBox*)combobox, "Option 1");
    gtk_combo_box_append_text((GtkComboBox*)combobox, "Option 2");
    gtk_combo_box_append_text((GtkComboBox*)combobox, "Option 3");
    optCount = 3;
  }

  if (optCount > 0) {
    gtk_combo_box_set_active((GtkComboBox*)combobox, 0);
  }
}

int main(int argc, char* argv[])
{
  GtkWidget* window;
  GtkWidget* vbox;
  GtkWidget* label;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title((GtkWindow*)window, "test");
  g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

  vbox = gtk_vbox_new(TRUE, 1);
  gtk_container_add((GtkContainer*)window, vbox);

  label = gtk_label_new("Options:");
  gtk_container_add((GtkContainer*)vbox, label);

  combobox = gtk_combo_box_text_new();
  gtk_container_add((GtkContainer*)vbox, combobox);

  button1 = gtk_button_new_with_label("Button 1");
  g_signal_connect(button1, "clicked", G_CALLBACK(on_clicked), NULL);
  gtk_container_add((GtkContainer*)vbox, button1);

  button2 = gtk_button_new_with_label("Button 2");
  g_signal_connect(button2, "clicked", G_CALLBACK(on_clicked), NULL);
  gtk_container_add((GtkContainer*)vbox, button2);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}

Раскрывающийся список со списком будет изменен после нажатия двух кнопок.

Затем выполните следующую проверку в консоли Python:

>>> launchapp('/home/devel/test')
70620
>>> GTK Accessibility Module initialized

>>> click('test', 'Button 1')
1
>>> getallitem('test', 'cbo*')
[]
>>> showlist('test', 'cbo*')
1
>>> hidelist('test', 'cbo*')
1
>>> getallitem('test', 'cbo*')
['Option 1', 'Option 2']
>>> click('test', 'Button 2')
1
>>> getallitem('test', 'cbo*')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/ldtp/client.py", line 75, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1602, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/site-packages/ldtp/client.py", line 200, in request
    raise e
xmlrpclib.Fault: <Fault 8002: 'atspi_error: Method "Get" with signature "ss" on interface "org.freedesktop.DBus.Properties" could not be processed as object /org/a11y/atspi/accessible/9 does not exist\n (1)'>
>>>

Журнал LDTP:

launchapp('/home/devel/test', [], 0, 1, 'C')
GTK Accessibility Module initialized
click('test', 'Button 1')
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11810480)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af1e0 (AtspiAccessible at 0x563e117f3ba0)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11a8afa0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af1e0 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e117fa220)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e117fa220)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11808d10)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e118359c0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11819250)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11842de0)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11842de0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e1184ccc0)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e1184ccc0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e118e20d0)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e118e20d0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3ba0)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e118e20d0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11906750)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3ba0)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11974340)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11974340)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e1197b000)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e1197b000)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3ba0)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e1197b000)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e1197b000)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3ba0)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e1197b000)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e1197b000)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3ba0)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11819ce0)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3ba0)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11819ce0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11a08eb0)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11a08eb0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11a08eb0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11a08eb0)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11a08eb0)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e11a913d0)>, <Atspi.Accessible object at 0x7f85200ed050 (AtspiAccessible at 0x563e1117e250)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e11a08eb0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af320 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
click
getallitem('test', 'cbo*')
(<Atspi.Event object at 0x7f85201e3f58 (AtspiEvent at 0x563e11a5b200)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af730 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3f58 (AtspiEvent at 0x563e1190ead0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af820 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
showlist('test', 'cbo*')
press
hidelist('test', 'cbo*')
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e117f31e0)>, 'window:create', <Atspi.Accessible object at 0x7f85200af960 (AtspiAccessible at 0x563e1188a920)>, <Atspi.Accessible object at 0x7f85200af820 (AtspiAccessible at 0x563e11a83da0)>)
(<Atspi.Event object at 0x7f85201e3ce8 (AtspiEvent at 0x563e117f31e0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200af960 (AtspiAccessible at 0x563e1188a920)>, <Atspi.Accessible object at 0x7f85200af820 (AtspiAccessible at 0x563e11a83da0)>)
press
getallitem('test', 'cbo*')
(<Atspi.Event object at 0x7f85201e3f58 (AtspiEvent at 0x563e11906d60)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200af9b0 (AtspiAccessible at 0x563e1188a920)>, <Atspi.Accessible object at 0x7f85200af780 (AtspiAccessible at 0x563e11a83da0)>)
(<Atspi.Event object at 0x7f85201e3f58 (AtspiEvent at 0x563e119497c0)>, 'window:destroy', <Atspi.Accessible object at 0x7f85200af820 (AtspiAccessible at 0x563e1188a920)>, <Atspi.Accessible object at 0x7f85200af780 (AtspiAccessible at 0x563e11a83da0)>)
click('test', 'Button 2')
click
getallitem('test', 'cbo*')
(<Atspi.Event object at 0x7f85201e3f58 (AtspiEvent at 0x563e117f31e0)>, 'window:deactivate', <Atspi.Accessible object at 0x7f85200afb90 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
(<Atspi.Event object at 0x7f85201e3f58 (AtspiEvent at 0x563e117f31e0)>, 'window:activate', <Atspi.Accessible object at 0x7f85200afb90 (AtspiAccessible at 0x563e117f3c20)>, <Atspi.Accessible object at 0x7f85200ed500 (AtspiAccessible at 0x563e10e73a50)>)
Unhandled Error
Traceback (most recent call last):
  File "/usr/lib64/python2.7/site-packages/twisted/web/server.py", line 190, in process
    self.render(resrc)
  File "/usr/lib64/python2.7/site-packages/twisted/web/server.py", line 241, in render
    body = resrc.render(self)
  File "/usr/lib64/python2.7/site-packages/twisted/web/resource.py", line 250, in render
    return m(request)
  File "/usr/lib/python2.7/site-packages/ldtpd/xmlrpc_daemon.py", line 126, in render_POST
    **kwargs).\
--- <exception caught here> ---
  File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 149, in maybeDeferred
    result = f(*args, **kw)
  File "/usr/lib/python2.7/site-packages/ldtpd/combo_box.py", line 428, in getallitem
    obj = self._get_object(window_name, object_name)
  File "/usr/lib/python2.7/site-packages/ldtpd/utils.py", line 961, in _get_object
    obj_name, obj_type)
  File "/usr/lib/python2.7/site-packages/ldtpd/utils.py", line 971, in _internal_get_object
    appmap = self._appmap_pairs(window_handle, window_name)
  File "/usr/lib/python2.7/site-packages/ldtpd/utils.py", line 779, in _appmap_pairs
    self._populate_appmap(gui, _parent, gui.getIndexInParent())
  File "/usr/lib/python2.7/site-packages/ldtpd/utils.py", line 746, in _populate_appmap
    self._populate_appmap(child, parent, index)
  File "/usr/lib/python2.7/site-packages/ldtpd/utils.py", line 746, in _populate_appmap
    self._populate_appmap(child, parent, index)
  File "/usr/lib/python2.7/site-packages/ldtpd/utils.py", line 746, in _populate_appmap
    self._populate_appmap(child, parent, index)
  File "/usr/lib/python2.7/site-packages/ldtpd/utils.py", line 746, in _populate_appmap
    self._populate_appmap(child, parent, index)
  File "/usr/lib/python2.7/site-packages/ldtpd/utils.py", line 732, in _populate_appmap
    parent = self._add_appmap_data(obj, parent, child_index)
  File "/usr/lib/python2.7/site-packages/ldtpd/utils.py", line 697, in _add_appmap_data
    for j in xrange(iaction.nActions):
  File "/usr/lib/python2.7/site-packages/pyatspi/action.py", line 106, in get_nActions
    return Atspi.Action.get_n_actions(self.obj)
GLib.Error: atspi_error: Method "Get" with signature "ss" on interface "org.freedesktop.DBus.Properties" could not be processed as object /org/a11y/atspi/accessible/9 does not exist
 (1)

Может ли кто-нибудь помочь выяснить причину?Что-то не так в моем тестовом приложении или тестовых кодах Python?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...