except ImportError, e:
WebDriver = e # allow some functionality without selenium
+
+_LOGGER = None
+
def get_logger(verbose=0):
+ global _LOGGER
+ if _LOGGER != None:
+ return _LOGGER
verbosities = [ # in order of decreasing severity
logging.CRITICAL,
logging.ERROR,
ch.setFormatter(formatter)
# add ch to logger
logger.addHandler(ch)
+ _LOGGER = logger
return logger
def save_section(self):
self.logger.info('saving current section')
+ self.w.find_element_by_id('Ribbon_Nav_HomeStrip').click()
+ time.sleep(self.wait_time)
self.w.find_element_by_link_text('Save').click()
time.sleep(self.wait_time)
a = self.w.switch_to_active_element()
a.send_keys(message+'\n')
- def find_field(self, field):
- self.logger.info('finding %s field' % field)
+ def find_field(self, field_regexp, name=None):
+ self.logger.info('finding %s field' % name)
# found id start by manually focusing in the element and running
# >>> a = s.w.switch_to_active_element()
# >>> a.get_attribute('id')
# FIELD*, but the number * changes between sessions/versions
- fields = [f for f in self.w.find_elements_by_tag_name('input')
- if f.get_attribute('id').startswith('FIELD')]
+ fields = []
+ for tag in ['input', 'textarea', 'iframe']:
+ fields.extend([f for f in self.w.find_elements_by_tag_name(tag)
+ if f.get_attribute('id').startswith('FIELD')])
match = False
for f in fields:
granddad = f.find_element_by_xpath('/../..')
- if granddad.get_text() == field:
+ if field_regexp.match(granddad.get_text()) != None:
match = True
break
if match != True:
- raise KeyError(field)
+ raise KeyError(name)
return (granddad, f)