class AddressInput(Component): """Objects and methods for the Address Input component.""" ROOT_LOCATOR: Selector = Selectors.data_id('ride-request-search') _pick_up_field: Selector = Selectors.value('Custom Pickup') _pick_up_submit: Selector = Selectors.data_id('pickup-submit') _drop_off_field: Selector = Selectors.value('Custom Drop-off') _drop_off_submit: Selector = Selectors.data_id('dropoff-submit') @property def drop_off_field(self) -> WebElement: return self.container.find_element(*self._drop_off_field) @property def drop_off_submit(self) -> WebElement: """Return the submit button. self.page.driver is used as the button exists outside of the address input container. """ return self.page.driver.find_element(*self._drop_off_submit) @property def pick_up_field(self) -> WebElement: return self.container.find_element(*self._pick_up_field) @property def pick_up_submit(self) -> WebElement: """Return the submit button. self.page.driver is used as the button exists outside of the address input container. """ return self.page.driver.find_element(*self._pick_up_submit) @property def suggestions(self) -> AutocompleteSuggestions: return AutocompleteSuggestions(self) def select_drop_off_location(self, drop_off: str) -> None: """Fill out a drop off location, then submit the location. :param drop_off: The drop off location for a ride. """ self.drop_off_field.fill(drop_off) self.suggestions.select_suggestion(drop_off) self.drop_off_submit.click() def select_pick_up_location(self, pick_up: str) -> None: """Fill out a pick up location, then submit the location. :param pick_up: The pick up location for a ride. """ self.pick_up_field.fill(pick_up) self.suggestions.select_suggestion(pick_up) self.pick_up_submit.click()
class PickupTimeModal(Component): """Objects and methods for the Pickup Time Modal component.""" ROOT_LOCATOR: Selector = Selectors.data_id('pickup-time-modal-container') _asap_ride_radio: Selector = Selectors.value('use-now') _future_ride_radio: Selector = Selectors.value('use-later') _back_button: Selector = Selectors.data_id('pickup-time-modal-back-button') _continue_button: Selector = Selectors.data_id( 'pickup-time-modal-continue-button') _date_field: Selector = Selectors.data_id('pickup-time-modal-date-field') _time_field: Selector = Selectors.data_id('pickup-time-modal-time-field') @property def asap_ride_button(self) -> WebElement: return self.container.find_element(*self._asap_ride_radio) @property def back_button(self) -> WebElement: return self.container.find_element(*self._back_button) @property def continue_button(self) -> WebElement: return self.container.find_element(*self._continue_button) @property def date_field(self) -> WebElement: return self.container.find_element(*self._date_field) @property def future_ride_button(self) -> WebElement: return self.container.find_element(*self._future_ride_radio) @property def time_field(self) -> WebElement: return self.container.find_element(*self._time_field) def submit_pickup_time(self) -> None: """Submit a selected pick up time.""" self.continue_button.click()