Python: как уменьшить масштаб страницы с помощью селена?

Я пытаюсь уменьшить масштаб до 25% в моей программе Python Selenium,

Это должно уменьшить масштаб:

к этому:

Как видите, все элементы, которые должны отображаться при прокрутке вниз на первом изображении, видны на втором изображении при уменьшении масштаба до 25%.

Я пытался driver.execute_script("document.body.style.zoom='25%'"), но вот как это уменьшилось:

По какой-то причине эти решения ничего не сделали для меня:

1-

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

actions = ActionChains(driver)
actions.key_down(Keys.CONTROL).send_keys(Keys.SUBTRACT).key_up(Keys.CONTROL).perform()

2-

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

zoomOut = ActionChains(driver)
zoomOut.key_down(Keys.CONTROL)
for i in range(7):
    print(i)
    zoomOut.send_keys("-")
zoomOut.key_up(Keys.CONTROL)
zoomOut.perform()

3- Решение driver.execute_script("$('id_body').css('zoom', 25);") в этого вопроса ничего не делает в моей программе.

Отвечает ли это на ваш вопрос? Как уменьшить масштаб страницы с помощью python selenium

Muhammadyusuf 25.12.2022 11:19

@Muhammadyusuf driver.execute_script("$('id_body').css('zoom', 25);") ничего не делает, я пробовал 4 разных решения, только одно уменьшило масштаб, но оно не уменьшилось, как должно, как вы можете видеть в моем вопросительном сообщении.

The_Fishy 25.12.2022 11:47
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
167
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я протестировал первый вариант (второй вариант такой же, как этот) и обнаружил, что код отлично работает. Но он работает только на уровне элементов страницы, а не на уровне окна или самого хрома. Вы можете убедиться в этом сами, запустив приведенный ниже код.

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
# set chromodriver.exe path
driver = webdriver.Chrome(executable_path='C:\\chromedriver\\chromedriver108.exe')
# object of ActionChains
action = ActionChains(driver)
# launch URL
# driver.get("https://keyboard-test.space/")
driver.get("https://en.key-test.ru/")
# driver.get("https://keyboardtestt.com/")
action.key_down(Keys.CONTROL).send_keys(Keys.SUBTRACT).key_up(Keys.CONTROL).perform()
# wait user input
input()
# close browser
driver.close()

Затем я просмотрел stackoverflow по связанным темам. В Почему не работают ярлыки Selenium Chromedriver? @pcalkins говорит:

Объем более или менее ограничен DOM. Раньше для этого была некоторая поддержка (не обязательно по дизайну), но я думаю, что все веб-драйверы/браузеры отказались от нее.

В python selenium sendkey не работает в хроме @soundwave говорит:

Webdriver предназначен для управления веб-страницей, а не для выполнения определенных действий в браузере. Смотрите здесь bugs.chromium.org

«Это ограничение в том, как мы имитируем ввод с клавиатуры в ChromeDriver. Клавиши отправляются непосредственно в процесс рендеринга, минуя процесс браузера. Таким образом, любые обработчики сочетаний клавиш в процессе браузера не будут вызываться».

а в «Драйвер Selenium Chrome отправляет комбинации клавиш в окно» @AndrewRegan говорит:

Спецификация WebDriver ориентирована на элементы и не определяет никакого метода отправки ключей в окно, на экран, в хром браузера — только на элементы.

Использование класса Selenium Actions для Cmd-R работает на моем Mac в Firefox (45), но только при запуске на переднем плане — и, похоже, совсем не в Chrome. Предположительно, это связано с различиями в реализации удаленной реализации клавиатуры, на которую, вероятно, лучше не полагаться.

Ответ принят как подходящий

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

Другие вопросы по теме