В цикле поднимаетесь по родителям элемента и проверяете каждый на "уникальность".
Для id всё просто, если id есть, то он уникален.
Для тэга тоже несложно, getElementsByTagName и проверяете список на количество элементов.
Хуже всего для классов. Тут надо перебрать все их сочетания как отдельно, так и с именем тэга.
А есть ещё и data-атрибуты, которые также можно использовать в селекторах в сочетании с классами и именем тэга.
Ну и самое неприятное, на динамических страницах то, что было "уникальным" может перестать им быть в любой момент. Достаточно, например, убрать класс, обеспечивавший уникальность.
Кстати, для li у вас уникальным родителем будет ul.