Я пытаюсь уменьшить масштаб до 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);") в этого вопроса ничего не делает в моей программе.
@Muhammadyusuf driver.execute_script("$('id_body').css('zoom', 25);") ничего не делает, я пробовал 4 разных решения, только одно уменьшило масштаб, но оно не уменьшилось, как должно, как вы можете видеть в моем вопросительном сообщении.






Я протестировал первый вариант (второй вариант такой же, как этот) и обнаружил, что код отлично работает. Но он работает только на уровне элементов страницы, а не на уровне окна или самого хрома. Вы можете убедиться в этом сами, запустив приведенный ниже код.
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. Предположительно, это связано с различиями в реализации удаленной реализации клавиатуры, на которую, вероятно, лучше не полагаться.
Таким образом, ответ заключается в том, что проблема связана с веб-сайтом, чтобы увидеть все элементы, которые мы должны прокрутить вниз, чтобы остальные данные были загружены.
Отвечает ли это на ваш вопрос? Как уменьшить масштаб страницы с помощью python selenium