docs: def _handle_dialog(self, dialog, title):
          """Handle a dialog.
  
          Returns:
              bool True if no more dialogs expected,
                   False if more dialogs needed, and
                   None if not handled
          """
          done = self.on_dialog(dialog, title)
          if isinstance(done, bool):
              return done
  
          if title.startswith('Start DUT'):
              body = dialog.find_element_by_id('cnfrmMsg').text
              if 'Sleepy End Device' in body:
                  self.dut.mode = 's'
                  self.dut.child_timeout = self.child_timeout
              elif 'End Device' in body:
                  self.dut.mode = 'rsn'
                  self.dut.child_timeout = self.child_timeout
              else:
                  self.dut.mode = 'rsdn'
  
              if 'at channel' in body:
                  self.channel = int(body.split(':')[1])
  
              self.dut.channel = self.channel
              self.dut.panid = settings.THREAD_PANID
              self.dut.networkname = settings.THREAD_NETWORKNAME
              self.dut.extpanid = settings.THREAD_EXTPANID
              self.dut.start()
  
          elif (title.startswith('MAC Address Required')
                or title.startswith('DUT Random Extended MAC Address Required')):
              mac = self.dut.mac
              inp = dialog.find_element_by_id('cnfrmInpText')
              inp.clear()
              inp.send_keys('0x%s' % mac)
  
          elif title.startswith('LL64 Address'):
              ll64 = None
              for addr in self.dut.addrs:
                  addr = addr.lower()
                  if addr.startswith('fe80') and not re.match('.+ff:fe00:[0-9a-f]{0,4}$', addr):
                      ll64 = addr
                      break
  
              if not ll64:
                  raise FailError('No link local address found')
  
              logger.info('Link local address is %s', ll64)
              inp = dialog.find_element_by_id('cnfrmInpText')
              inp.clear()
              inp.send_keys(ll64)
  
          elif title.startswith('Enter Channel'):
              self.dut.channel = self.channel
              inp = dialog.find_element_by_id('cnfrmInpText')
              inp.clear()
              inp.send_keys(str(self.dut.channel))
  
          elif title.startswith('User Action Needed'):
              body = dialog.find_element_by_id('cnfrmMsg').text
              if body.startswith('Power Down the DUT'):
                  self.dut.stop()
              return True
  
          elif title.startswith('Short Address'):
              short_addr = '0x%s' % self.dut.short_addr
              inp = dialog.find_element_by_id('cnfrmInpText')
              inp.clear()
              inp.send_keys(short_addr)
  
          elif title.startswith('ML64 Address'):
              ml64 = None
              for addr in self.dut.addrs:
                  if addr.startswith('fd') and not re.match('.+ff:fe00:[0-9a-f]{0,4}$', addr):
                      ml64 = addr
                      break
  
              if not ml64:
                  raise Exception('No mesh local address found')
  
              logger.info('Mesh local address is %s', ml64)
              inp = dialog.find_element_by_id('cnfrmInpText')
              inp.clear()
              inp.send_keys(ml64)
  
          elif title.startswith('Shield Devices') or title.startswith('Sheild DUT'):
              if self.rf_shield:
                  logger.info('Shielding devices')
                  with self.rf_shield:
                      self.rf_shield.shield()
              elif self.dut and settings.SHIELD_SIMULATION:
                  self.dut.channel = (self.channel == THREAD_CHANNEL_MAX
                                      and THREAD_CHANNEL_MIN) or (self.channel + 1)
              else:
                  raw_input('Shield DUT and press enter to continue..')
  
          elif title.startswith('Unshield Devices') or title.startswith('Bring DUT Back to network'):
              if self.rf_shield:
                  logger.info('Unshielding devices')
                  with self.rf_shield:
                      self.rf_shield.unshield()
              elif self.dut and settings.SHIELD_SIMULATION:
                  self.dut.channel = self.channel
              else:
                  raw_input('Bring DUT and press enter to continue..')
  
          elif title.startswith('Configure Prefix on DUT'):
              body = dialog.find_element_by_id('cnfrmMsg').text
              body = body.split(': ')[1]
              params = reduce(lambda params, param: params.update(((param[0].strip(' '), param[1]),)) or params,
                              [it.split('=') for it in body.split(', ')], {})
              prefix = params['P_Prefix'].strip('\0\r\n\t ')
              flags = []
              if params.get('P_slaac_preferred', 0) == '1':
                  flags.append('p')
              flags.append('ao')
              if params.get('P_stable', 0) == '1':
                  flags.append('s')
              if params.get('P_default', 0) == '1':
                  flags.append('r')
              prf = 'high'
              self.dut.add_prefix(prefix, ''.join(flags), prf)
  
          return False