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

Selenium Python: подсчет количества элементов(используя кнопку "next"

Теги: #<Tag:0x00007f7483625508> #<Tag:0x00007f74836253f0>

Всем привет! Столкнулась с проблемой: цикл неправильно подсчитывает количество элементов. Задача такова: нужно посчитать количество элементов в таблице, где есть Next кнопка и кликать до тех пор пока кнопка не станет disable. В итоге должно быть подсчитано общее количество элеметвов. Мой код:

count = 0
elem = self.driver.find_element(By.CSS_SELECTOR,'button.table-pagination-arrows__item.table-pagination-arrows__item_right')
while not elem.get_attribute('disabled'):
            self.driver.execute_script("document.querySelector('button.table-pagination-arrows__item.table-pagination-arrows__item_right').click();",elem)
            self.len_products_before = len(
                self.driver.find_elements(By.CSS_SELECTOR, ProductsLocators.NUMBER_PRODUCTS))
            count += self.len_products_before
            if elem.get_attribute('disabled'):
                self.len_products_before = len(
                    self.driver.find_elements(By.CSS_SELECTOR, ProductsLocators.NUMBER_PRODUCTS))
                count += self.len_products_before
                break
            print(count)

Буду очень благодарна за подсказку!

@Natalia_Roshchyna

я правильно понял - проверяете сначала что :

while not elem.get_attribute('disabled'):

а потом все наоборот. :

if elem.get_attribute('disabled'):

получается два разных условия , но все равно происходит

            count += self.len_products_before

@mrGorobec да,так как мне нужно чтобы количество подсчитало верно и на последней странице,где next disabled. Как можно изменить цикл,чтобы подсчитало верно элементы на всех страницах включая последнюю,где next disabled?

disabled = elem.get_attribute('disabled')
count = 0
while not disabled:
    disabled = elem.get_attribute('disabled')
    self.driver.execute_script(
        "document.querySelector('button.table-pagination-arrows__item.table-pagination-arrows__item_right').click();",
        elem)
    count += len(self.driver.find_elements(By.CSS_SELECTOR, ProductsLocators.NUMBER_PRODUCTS))

а больше потому что при последнем прогоне у тебя два разы считались елементы.
count += self.len_products_before
и при заходе в if

if elem.get_attribute('disabled'):
                self.len_products_before = len(
                    self.driver.find_elements(By.CSS_SELECTOR, ProductsLocators.NUMBER_PRODUCTS))
                count += self.len_products_before
                break

Спасибо всем! Сработал у меня такой код:

disabled = elem.get_attribute('disabled')
count = 0
count += len(self.driver.find_elements(By.CSS_SELECTOR, ProductsLocators.NUMBER_PRODUCTS))
        while not disabled:
            count += len(self.driver.find_elements(By.CSS_SELECTOR, ProductsLocators.NUMBER_PRODUCTS))
            disabled = elem.get_attribute('disabled')
            self.driver.execute_script("document.querySelector('button.table-pagination-arrows__item.table-pagination-arrows__item_right').click();",elem)
2 Симпатий