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

Почему selenium не ищет объект внутри объекта по xpath?

Теги: #<Tag:0x00007f748a3c9550> #<Tag:0x00007f748a3c9230>

Проект - интернет магазин. Задача выбрать нужный блок товара из списка.

Я создаю объект, передаю в конструктор номер товара в списке, например 5. В конструкторе создается объект selenium - весь блок с товаром, в котором название, цена и кнопка - добавить в корзину.

Значит когда я вызываю метод - product_title, selenium должен искать по xpath именно в этом объекте, в одном небольшом блоке с товаром, а не по всей странице.

Что я делаю не так, где ошибка?

class CategoryPage(Page):

    def __init__(self, n):
        self.product = find("//ol[@class='products list items product-items']/li[%d]" % n)

    def add_to_cart(self, n, qty=1):
        pass

    #--------------------------------  ELEMENTS (returns selenium object) -------------------------------------
    @property
    def product_title(self):
        return self.product.find_element_by_xpath("//div//strong/a")

Замените xpath в product_title на ./div//strong/a ну или что то вроде того. Указывая в начале xpath ‘//’ вы ищите элементы от корня.

// ищет от корня документа всегда, если вам надо искать от предыдущего контекста, то надо начинать с точки .//
ну или использовать css селекторы.