Как выбрать полосу прокрутки, отображаемую Javascript в Selenium (Python)?

#python #angular #selenium

Вопрос:

Я использую Selenium для извлечения информации с частного сайта компании. Я уже использовал Selenium раньше, я знаю, как выбирать элементы, вводить клавиши, прокручивать и так далее. Однако это первый раз, когда я столкнулся с полосой прокрутки, которая на самом деле отображается с помощью Javascript, который не является частью исходного HTML. Информация отображается интерактивными сценариями, которые, как я полагаю, являются угловыми JS.

Я понятия не имею, как это выбрать. Я нашел элемент на картинке. Я пробовал browser.execute_script("window.scrollTo(0,300)") и аналогично прокручивать элемент, но это не работает. Я считаю, что из-за того, что в исходном окне нет полосы прокрутки, он выйдет из строя. Однако

 test = browser.find_element(By.XPATH, '''/html/body/ess-root/core-ui-theme/ess-core-layout/pol-layout/pol-content/ess-employee-list-page/
div/div/ess-employee-cards-container/cdk-virtual-scroll-viewport''')
browser.execute_script('window.scrollTo(0,300)', test)
 

Это тоже не работает. У меня вроде как нет идей о том, что делать. Нужно ли мне пытаться выбрать это с помощью пикселей?

Элемент, содержащий полосу прокрутки

Макет веб-сайта выглядит следующим образом.

Структура сайта

Расширенное содержимое внутри элемента: введите описание изображения здесь

Обновление: Я поиграл с атрибутом элемента. Это действительно в какой-то степени работает. Он может прокручиваться вверх и вниз, однако содержимое таблицы не обновляется, поэтому теперь мой экран пуст. Этот код изменяет стиль элемента, но я подозреваю, что чего-то еще все еще не хватает.

 test2 = browser.find_element(By.XPATH, '''/html/body/ess-root/core-ui-theme/ess-core-layout/pol-layout/pol-content/
ess-employee-list-page/div/div/ess-employee-cards-container/cdk-virtual-scroll-viewport/div[1]''')
password = browser.execute_script('arguments[0].style = style="transform: translateY(-356px);"', test2)
 

Обновление 2: Я решил проблему с помощью pyautogui . Я должен вручную направить мышь, чтобы перейти к полосе прокрутки, и позволить ей прокручиваться вниз (потому что прокрутка работает только в том случае, если мышь находится в фокусе таблицы). Я получил всю информацию, которую хотел. Тем не менее, я по-прежнему предпочитаю подход с чистым селеном, если это возможно.

Комментарии:

1. Можете ли вы поделиться ссылкой на сайт, если это возможно?

2. Мне жаль, что я не могу поделиться сайтом. Я могу предоставить вам сайт без учетных данных ess.hrmos.co/login

3. Вам нравится достигать элемента или вы хотите действовать на полосе прокрутки?

4. Сделайте в своем браузере -> ctrl_shift I ->> Нажмите на вкладку элемента ->>> нажмите Ctrl F ->>>> И теперь протестируйте свой xpath там. Короче говоря, откройте инструмент разработчика и проверьте свой xpath, правильно это или нет? Попробуйте это: //*[содержит(@класс,’cdk-виртуальная прокрутка-окно просмотра’)] . Ваш xpath или локатор всегда должны возвращать 1 элемент, пока он конкретно не будет использован для получения нескольких элементов.

5. Я просто хочу прокрутить панель, чтобы на ней было больше элементов