Python & Selenium - как найти все идентификаторы элементов на странице?

Я знаю, что могу использовать такие методы, как:

find_elements_by_tag_name()
find_elements_by_id()
find_elements_by_css_selector()
find_elements_by_xpath()

Но то, что я хотел бы сделать, это просто получить список всех идентификаторов элементов, существующих на странице, возможно, вместе с типом тега, в котором они встречаются.

Как я могу это сделать?

Ответ 1

Не нужно было этого делать раньше, но логично думать об этом можно с помощью XPath для этого (может быть, другими способами, XPath - это первое, что появляется в моей голове).

Используйте find_elements_by_xpath с помощью элемента XPath //*[@id] ( any, который имеет идентификатор какого-либо типа).

Затем вы можете выполнить итерацию через коллекцию и использовать свойство .tag_name для каждого элемента, чтобы узнать, какой тип элемента и метод/функция get_attribute("id") получить этот идентификатор элемента.

Примечание. Это, вероятно, будет довольно медленным. В конце концов, вы запрашиваете много информации.

Ответ 2

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://google.com')

ids = driver.find_elements_by_xpath('//*[@id]')
for ii in ids:
    #print ii.tag_name
    print ii.get_attribute('id')    # id name as string