diff --git a/erp5/util/test_browser/browser.py b/erp5/util/test_browser/browser.py
index eafc82531815ead0233b4a39df825f3759e4eca2..dc767ccbbfd1ee8dd654a4df36dfa1c570b635f1 100644
--- a/erp5/util/test_browser/browser.py
+++ b/erp5/util/test_browser/browser.py
@@ -337,8 +337,19 @@ class Browser(ExtendedTestBrowser):
                                                column_number,
                                                cell_element_index)
 
-    return self.getContextLink(url=self.etree.xpath(xpath_str).get('href'),
-                               *args, **kwargs)
+    # xpath() method always return a list even if there is only one element
+    element_list = self.etree.xpath(xpath_str)
+
+    try:
+      link_href = element_list[0].get('href')
+    except (IndexError, AttributeError):
+      link_href = None
+
+    if not link_href:
+      raise LookupError("Could not find link in listbox cell %dx%d (index=%d)" %\
+                          (line_number, column_number, cell_element_index))
+
+    return self.getContextLink(url=link_href, *args, **kwargs)
 
   def getListboxPosition(self,
                          text,
@@ -700,7 +711,18 @@ class ContextMainForm(MainForm):
          column_number,
          cell_element_index)
 
-    input_element = self.browser.etree.xpath(xpath_str)[0]
+    # xpath() method always return a list even if there is only one element
+    element_list = self.browser.etree.xpath(xpath_str)
+
+    try:
+      input_element = element_list[0]
+      input_name = input_element.get('name')
+    except (IndexError, AttributeError):
+      input_element = input_name = None
+
+    if input_element is None or not input_name:
+      raise LookupError("Could not find control in listbox cell %dx%d (index=%d)" %\
+                          (line_number, column_number, cell_element_index))
 
     control = self.getControl(name=input_element.get('name'), *args, **kwargs)