async def _find_elements(link: str, html_tree, conf: dict) -> dict:
    """
    Find elements with XPATH selectors on the webpage.

    Args:
        `link`: the link to the desired webpage.\n
        `html_tree`: HTML tree of the webpage.\n
        `conf`: keys and XPATH selectors to run scraping against.
    Returns:
        `dict`: the dictionary of links with values that are scraped using XPATH selectors.
    """
    result = {"service_name": conf["service_name"], "link": link}
    service_name = conf.pop("service_name", None)
    for field in conf:
        xpath_or_with_endpoint = conf[field]
        if isinstance(xpath_or_with_endpoint, dict):
            ((endpoint, xpath),) = xpath_or_with_endpoint.items()
        else:
            xpath = xpath_or_with_endpoint
            endpoint = None
        scraped = html_tree.xpath(xpath)
        if not scraped:
            continue

        try:
            scraped = list(map(lambda x: x.text, scraped))
        except AttributeError:
            scraped = list(scraped)

        for i, scraped_item in enumerate(scraped):
            scraped[i] = scraped_item if endpoint is None else endpoint + scraped_item

        # for compound values
        if len(scraped) == 1:
            scraped = scraped[0]

        result[field] = scraped
    conf["service_name"] = service_name
    return result