t.me/atinfo_chat Telegram группа по автоматизации тестирования

(selenium/webdriver/python)Выбрать рандомно елемент, вернуть его имя и нажать в нем кнопку

Теги: #<Tag:0x00007f07fb77ab28> #<Tag:0x00007f07fb77aa60> #<Tag:0x00007f07fb77a948>

Доброго времени суток.
Подскажите, пожалуйста. Есть страница с элементами, у которых есть свои разные атрибуты (имя, кнопки и т.д.).
Хочу на странице выбрать рандомный элемент и с него вытянуть сначала имя а потом у этого элемента нажать на кнопку.

Написал так:

def import_random_chart_button(self):
    wd = self.app.wd

выбираю рандомно элемент

    links = wd.find_elements_by_xpath('//div[@class="element_name"]')
    l = links[randint(0, len(links) - 1)]

у рандомно выбранного элемента достаю его имя

    name = l.find_element_by_xpath('//*[@class="element_name"]/div[1]/h1')
    name1 = name.text

у рандомно выбранного элемента нажимаю на кнопку

    button = l.find_element_by_xpath('//*[@title="Import chart into Charts"]')
    button.click()
    return name1

код в принципе возвращает имя и нажимает в нем кнопку, но почему то это постоянно первый элемент из списка, а не рандомный.
Может кто подскажет, где я не прав?

ну так потому что это база: findElement ищет первый элемент по локатору

если вы хотите кликать в рандомную кнопку, то напишите универсальный локатор, ищите коллекцию findElements и уже в ней по рандомному индексу кликайте

я не хочу все действия делать для разных элементов.
я хочу найти один элемент и в нем скопировать имя и нажать на кнопку

для этого я как раз ищу элемент по findElements и потом с этим элементом и пытаюсь работать

ну так определите размер коллекции, затем рандомно возьмите индекс от 0 до найденного размера и через [индекс] работайте с этим элементом

а я разве не так делаю?)

я вообще не понимаю что вы делаете, вы зачем-то в элементе делаете поиск по xpath