[Erp5-report] r44978 arnaud.fontaine - /erp5/trunk/utils/erp5.utils.test_browser/src/erp5/u...

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Apr 1 10:59:54 CEST 2011


Author: arnaud.fontaine
Date: Fri Apr  1 10:59:54 2011
New Revision: 44978

URL: http://svn.erp5.org?rev=44978&view=rev
Log:
Support old listboxes by passing is_legacy parameter

Modified:
    erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py

Modified: erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py
URL: http://svn.erp5.org/erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py?rev=44978&r1=44977&r2=44978&view=diff
==============================================================================
--- erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py [utf8] (original)
+++ erp5/trunk/utils/erp5.utils.test_browser/src/erp5/utils/test_browser/browser.py [utf8] Fri Apr  1 10:59:54 2011
@@ -369,8 +369,11 @@ class Browser(ExtendedTestBrowser):
 
   _listbox_table_xpath_str = '//table[contains(@class, "listbox-table")]'
 
+  _legacy_listbox_table_xpath_str = '//div[contains(@class, "listbox")]'\
+      '//table'
+
   def getListboxLink(self, line_number, column_number, cell_element_index=1,
-                     *args, **kwargs):
+                     is_legacy=False, *args, **kwargs):
     """
     Follow the link at the given position, excluding any link whose
     class is hidden. In case there are several links within a cell,
@@ -393,18 +396,31 @@ class Browser(ExtendedTestBrowser):
     @raise LookupError: No link could be found at the given position
                         and cell indexes
     """
+    if is_legacy:
+      listbox_basic_xpath_str = self._legacy_listbox_table_xpath_str
+    else:
+      listbox_basic_xpath_str = self._listbox_table_xpath_str
+
     # With XPATH, the position is context-dependent, therefore, as
     # there the cells are either within a <thead> or <tbody>, the line
     # number must be shifted by the number of header lines (namely 2)
     if line_number <= 2:
       relative_line_number = line_number
-      column_type = 'th'
+
+      if is_legacy:
+        column_type = 'td'
+      else:
+        column_type = 'th'
     else:
-      relative_line_number = line_number - 2
+      if is_legacy:
+        relative_line_number = line_number
+      else:
+        relative_line_number = line_number - 2
+
       column_type = 'td'
 
     xpath_str = '%s//tr[%d]//%s[%d]//a[not(contains(@class, "hidden"))][%d]' % \
-        (self._listbox_table_xpath_str,
+        (listbox_basic_xpath_str,
          relative_line_number,
          column_type,
          column_number,
@@ -428,7 +444,8 @@ class Browser(ExtendedTestBrowser):
                          text,
                          column_number=None,
                          line_number=None,
-                         strict=False):
+                         strict=False,
+                         is_legacy=False):
     """
     Returns the position number of the first line containing given
     text in given column or line number (starting from 1).
@@ -449,27 +466,46 @@ class Browser(ExtendedTestBrowser):
     # Require either column_number or line_number to be given
     onlyOne([column_number, line_number], '"column_number" and "line_number"')
 
+    if is_legacy:
+      listbox_basic_xpath_str = self._legacy_listbox_table_xpath_str
+    else:
+      listbox_basic_xpath_str = self._listbox_table_xpath_str
+
     # Get all cells in the column (if column_number is given and
     # including header columns) or line (if line_number is given)
     if column_number:
-      xpath_str_fmt = self._listbox_table_xpath_str + '//tr//%%s[%d]' % \
+      xpath_str_fmt = listbox_basic_xpath_str + '//tr//%%s[%d]' % \
           column_number
 
-      column_or_line_xpath_str = "%s | %s" % (xpath_str_fmt % 'th',
-                                              xpath_str_fmt % 'td')
+      if is_legacy:
+        column_or_line_xpath_str = xpath_str_fmt % 'td'
+      else:
+        column_or_line_xpath_str = "%s | %s" % (xpath_str_fmt % 'th',
+                                                xpath_str_fmt % 'td')
+
     else:
+      listbox_basic_xpath_str = self._listbox_table_xpath_str
+
       # With XPATH, the position is context-dependent, therefore, as
       # there the cells are either within a <thead> or <tbody>, the
       # line number must be shifted by the number of header lines
       # (namely 2)
       if line_number <= 2:
         relative_line_number = line_number
-        column_type = 'th'
+
+        if is_legacy:
+          column_type = 'td'
+        else:
+          column_type = 'th'
       else:
-        relative_line_number = line_number - 2
+        if is_legacy:
+          relative_line_number = line_number
+        else:
+          relative_line_number = line_number - 2
+
         column_type = 'td'
 
-      column_or_line_xpath_str = self._listbox_table_xpath_str + '//tr[%d]//%s' %\
+      column_or_line_xpath_str = listbox_basic_xpath_str + '//tr[%d]//%s' %\
           (relative_line_number, column_type)
 
     cell_list = self.etree.xpath(column_or_line_xpath_str)
@@ -812,7 +848,7 @@ class ContextMainForm(MainForm):
     self.submit(name='Base_callDialogMethod:method')
 
   def getListboxControl(self, line_number, column_number, cell_element_index=1,
-                        *args, **kwargs):
+                        is_legacy=False, *args, **kwargs):
     """
     Get the control located at line and column numbers (both starting
     from 1), excluding hidden control and those whose class is hidden
@@ -840,16 +876,29 @@ class ContextMainForm(MainForm):
     @raise LookupError: No control could be found at the given
                         position and cell indexes
     """
+    if is_legacy:
+      listbox_basic_xpath_str = self.browser._legacy_listbox_table_xpath_str
+    else:
+      listbox_basic_xpath_str = self.browser._listbox_table_xpath_str
+
     if line_number <= 2:
       relative_line_number = line_number
-      column_type = 'th'
+
+      if is_legacy:
+        column_type = 'td'
+      else:
+        column_type = 'th'
     else:
-      relative_line_number = line_number - 2
+      if is_legacy:
+        relative_line_number = line_number
+      else:
+        relative_line_number = line_number - 2
+
       column_type = 'td'
 
     xpath_str = '%s//tr[%d]//%s[%d]/*[not(@type="hidden") and ' \
         'not(contains(@class, "hidden"))][%d]' % \
-        (self.browser._listbox_table_xpath_str,
+        (listbox_basic_xpath_str,
          relative_line_number,
          column_type,
          column_number,



More information about the Erp5-report mailing list