[Erp5-report] r44458 vincent - /erp5/trunk/utils/erp5mechanize/ERP5Mechanize.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Mar 21 11:05:53 CET 2011


Author: vincent
Date: Mon Mar 21 11:05:53 2011
New Revision: 44458

URL: http://svn.erp5.org?rev=44458&view=rev
Log:
Update to newest listbox renderer.

- use table element to locate a listbox
- use listbox-table class instead of ListContent
- listbox title row uses "th", not "td"

Modified:
    erp5/trunk/utils/erp5mechanize/ERP5Mechanize.py

Modified: erp5/trunk/utils/erp5mechanize/ERP5Mechanize.py
URL: http://svn.erp5.org/erp5/trunk/utils/erp5mechanize/ERP5Mechanize.py?rev=44458&r1=44457&r2=44458&view=diff
==============================================================================
--- erp5/trunk/utils/erp5mechanize/ERP5Mechanize.py [utf8] (original)
+++ erp5/trunk/utils/erp5mechanize/ERP5Mechanize.py [utf8] Mon Mar 21 11:05:53 2011
@@ -453,9 +453,9 @@ class ERP5Mechanize:
     """
     from xml.dom.minidom import parseString
     document = parseString(self.getHtml().get_data())
-    for element in document.getElementsByTagName(u'div'):
+    for element in document.getElementsByTagName(u'table'):
       if element.attributes.get(u'class') is not None and\
-         element.attributes.get(u'class').value == u'ListContent':
+         u'listbox-table' in element.attributes.get(u'class').value:
         # XXX: Hardcoded class name
         return element
     return None
@@ -468,9 +468,13 @@ class ERP5Mechanize:
 
       XXX: what if there is more than one field in a cell ?
     """
+    if line_number == 0:
+      cell_type = u'th'
+    else:
+      cell_type = u'td'
     self.fillField(str(self._getListbox()\
                   .getElementsByTagName(u'tr')[line_number]\
-                  .getElementsByTagName(u'td')[column_number]\
+                  .getElementsByTagName(cell_type)[column_number]\
                   .getElementsByTagName(u'input')[0].attributes[u'name'].value)
                    , value)
 
@@ -494,8 +498,10 @@ class ERP5Mechanize:
     """
     line_list = self._getListbox().getElementsByTagName(u'tr')
     for line_pos in xrange(len(line_list)):
-      for child in line_list[line_pos].getElementsByTagName(u'td')\
-                                                   [column_number].childNodes:
+      cell_list = line_list[line_pos].getElementsByTagName(u'td')
+      if len(cell_list) == 0:
+        continue
+      for child in cell_list[column_number].childNodes:
         if self.match(child, value, strict):
           return line_pos
     return None
@@ -505,8 +511,11 @@ class ERP5Mechanize:
       Returns the position number of the first column
       containing given text at given line, None if not found.
     """
-    column_list = self._getListbox().getElementsByTagName(u'tr')\
-                                      [line_number].getElementsByTagName(u'td')
+    if line_number == 0:
+      cell_type = u'th'
+    else:
+      cell_type = u'td'
+    column_list = self._getListbox().getElementsByTagName(u'tr')[line_number].getElementsByTagName(cell_type)
     for cell_pos in xrange(len(column_list)):
       for child in column_list[cell_pos].childNodes:
         if self.match(child, value, strict):
@@ -519,9 +528,13 @@ class ERP5Mechanize:
 
       XXX: what if there is more than one link ?
     """
+    if line_number == 0:
+      cell_type = u'th'
+    else:
+      cell_type = u'td'
     return self.timeOpen(str(self._getListbox()\
                      .getElementsByTagName(u'tr')[line_number]\
-                     .getElementsByTagName(u'td')[column_number]\
+                     .getElementsByTagName(cell_type)[column_number]\
                      .getElementsByTagName(u'a')[0].attributes[u'href'].value))
 
   def doListboxAction(self):



More information about the Erp5-report mailing list