def add_tour_step(self, message, selector=None, name=None,<EOL>title=None, theme=None, alignment=None, duration=None):
if not selector:<EOL><INDENT>selector = "<STR_LIT:html>"<EOL><DEDENT>if page_utils.is_xpath_selector(selector):<EOL><INDENT>selector = self.convert_to_css_selector(selector, By.XPATH)<EOL><DEDENT>selector = self.__escape_quotes_if_needed(selector)<EOL>if not name:<EOL><INDENT>name = "<STR_LIT:default>"<EOL><DEDENT>if name not in self._tour_steps:<EOL><INDENT>self.create_tour(name=name, theme="<STR_LIT>")<EOL><DEDENT>if not title:<EOL><INDENT>title = "<STR_LIT>"<EOL><DEDENT>title = self.__escape_quotes_if_needed(title)<EOL>if message:<EOL><INDENT>message = self.__escape_quotes_if_needed(message)<EOL><DEDENT>else:<EOL><INDENT>message = "<STR_LIT>"<EOL><DEDENT>if not alignment or (<EOL>alignment not in ["<STR_LIT>", "<STR_LIT>", "<STR_LIT:left>", "<STR_LIT:right>"]):<EOL><INDENT>if "<STR_LIT>" not in self._tour_steps[name][<NUM_LIT:0>]:<EOL><INDENT>alignment = "<STR_LIT>"<EOL><DEDENT>else:<EOL><INDENT>alignment = "<STR_LIT>"<EOL><DEDENT><DEDENT>if "<STR_LIT>" in self._tour_steps[name][<NUM_LIT:0>]:<EOL><INDENT>self.__add_bootstrap_tour_step(<EOL>message, selector=selector, name=name, title=title,<EOL>alignment=alignment, duration=duration)<EOL><DEDENT>elif "<STR_LIT>" in self._tour_steps[name][<NUM_LIT:0>]:<EOL><INDENT>self.__add_hopscotch_tour_step(<EOL>message, selector=selector, name=name, title=title,<EOL>alignment=alignment)<EOL><DEDENT>elif "<STR_LIT>" in self._tour_steps[name][<NUM_LIT:0>]:<EOL><INDENT>self.__add_introjs_tour_step(<EOL>message, selector=selector, name=name, title=title,<EOL>alignment=alignment)<EOL><DEDENT>else:<EOL><INDENT>self.__add_shepherd_tour_step(<EOL>message, selector=selector, name=name, title=title,<EOL>theme=theme, alignment=alignment)<EOL><DEDENT>
Allows the user to add tour steps for a website.
            @Params
            message - The message to display.
            selector - The CSS Selector of the Element to attach to.
            name - If creating multiple tours at the same time,
                   use this to select the tour you wish to add steps to.
            title - Additional header text that appears above the message.
            theme - (NON-Bootstrap Tours ONLY) The styling of the tour step.
                    Choose from "light"/"arrows", "dark", "default", "square",
                    and "square-dark". ("arrows" is used if None is selected.)
            alignment - Choose from "top", "bottom", "left", and "right".
                        ("top" is the default alignment).
            duration - (Bootstrap Tours ONLY) The amount of time, in seconds,
                       before automatically advancing to the next tour step.