Всем привет! Столкнулась с проблемой: цикл неправильно подсчитывает количество элементов. Задача такова: нужно посчитать количество элементов в таблице, где есть 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 лайка