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

python
selenium
Теги: #<Tag:0x00007f7b619e51b8> #<Tag:0x00007f7b619e5078>

(Bitande7) #1

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

Я создаю объект, передаю в конструктор номер товара в списке, например 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")

(rmerkushin) #2

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


(Yaroslav Pernerovskyy) #3

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