#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. Я просто хочу прокрутить панель, чтобы на ней было больше элементов