docstr: Select Date in DPS component with either index or day
  compid: the id defined for component
  index: the index for all visibles in the popup calendar
  day: a number or string; if set, use this to select instead of index
  outside_month: used in conjunction with day. indicates if the day out
      the scope of current month. default False.
docstr_tok: ["Select","Date","in","DPS","component","with","either","index","or","day","compid",":","the","id","defined","for","component","index",":","the","index","for","all","visibles","in","the","popup","calendar","day",":","a","number","or","string",";","if","set",",","use","this","to","select","instead","of","index","outside_month",":","used","in","conjunction","with","day",".","indicates","if","the","day","out","the","scope","of","current","month",".","default","False","."]
code: def select_date_single(
      self, compid, index=0, day="", outside_month=False
  ):
      """Select Date in DPS component with either index or day
      compid: the id defined for component
      index: the index for all visibles in the popup calendar
      day: a number or string; if set, use this to select instead of index
      outside_month: used in conjunction with day. indicates if the day out
          the scope of current month. default False.
      """
      date = self.find_element(f"#{compid} input")
      date.click()
  
      def is_month_valid(elem):
          return (
              "__outside" in elem.get_attribute("class")
              if outside_month
              else "__outside" not in elem.get_attribute("class")
          )
  
      self._wait_until_day_is_clickable()
      days = self.find_elements(self.date_picker_day_locator)
      if day:
          filtered = [
              _
              for _ in days
              if _.text == str(day) and is_month_valid(_)
          ]
          if not filtered or len(filtered) > 1:
              logger.error(
                  "cannot find the matched day with index=%s, day=%s",
                  index,
                  day,
              )
          matched = filtered[0]
      else:
          matched = days[index]
  
      matched.click()
      return date.get_attribute("value")
  
file_path: dash/components/dash-core-components/tests/dash_core_components_page.py
imports: import logging
  from selenium.webdriver.support.ui import WebDriverWait
  from selenium.webdriver.common.by import By
  from selenium.webdriver.support import expected_conditions
  from selenium.webdriver.common.action_chains import ActionChains
label_desc: Use image node_id 1 for calling the DashCoreComponentsMixin obj's underlying member method code with example usage: obj.select_date_single(compid, index, day, outside_month) and returns: date, unknown