изменение длины элемента (селен, питон) - PullRequest
0 голосов
/ 22 марта 2019

В настоящее время я пытаюсь перебрать поток кликабельных элементов и нажимать их по одному, а также прокручивать вниз, чтобы получить новые элементы в диапазоне просмотра. Проблема в том, что я щелкаю элементы, основываясь на длинеsence_of_all_elements_located (которую я назначаю переменной с именем elem). При вызове этой функции размер элемента продолжает увеличиваться до определенной точки (в большинстве случаев около 60), а затем начинает немного уменьшаться, а затем продолжает увеличиваться в диапазоне от 40 до 60 даже при загрузке нового содержимого. Проблема в том, что я не могу щелкнуть по каждому отдельному элементу, потому что в момент изменения размера полученной переменной счетчик больше не указывает на следующий элемент, а на какой-то элемент в конце вновь загруженных элементов. Таким образом, я пропускаю много элементов. Я пытался объяснить это как можно лучше, если у вас есть какие-либо вопросы, просто спросите. Заранее спасибо.

Я пытался настроить переменную счетчика для нового изменения размера, но, поскольку изменение размера продолжает изменяться, я не могу исправить это таким образом

Вот код, который я использую:


        # iterate through displayed feed


        #load all so far reachable elements once
        self.elem = WebDriverWait(self.driver, 10).until(
            EC.presence_of_all_elements_located((By.CSS_SELECTOR, "classnamehere")))



        print("elem1 length: " + str(len(self.elem)))

        if self.scroll_position < len(self.elem) - 1:
            self.scroll_position += 1
        else:
            pass

        #scroll to picture we want to click on
        actions = ActionChains(self.driver)
        if self.scroll_position < len(self.elem):
            actions.move_to_element(self.elem[self.scroll_position]).perform()


        self.elem[self.scroll_position].click()

1 Ответ

0 голосов
/ 22 марта 2019

Вот простое решение.

elems = WebDriverWait(self.driver, 10).until(
        EC.presence_of_all_elements_located((By.CSS_SELECTOR, "classnamehere")))
for ele in elems:
    # this will scroll the element into view
    ele.location_once_scrolled_into_view
    # click on the element
    ele.click()
    # if .click() not worked then comment that above line and use below line
    #driver.execute_script("arguments[0].click();",ele)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...