Как поменять zoom selenide ctrl
Перейти к содержимому

Как поменять zoom selenide ctrl

  • автор:

python selenium browser zoom in with shortcut (ctrl + ‘+’) problem

Can you share ALL you code? What exactly you have before the lines where you trying to zoom in your window?

Feb 24, 2022 at 9:23

2 Answers 2

I wasted a lot of time. It seems CTRL + or — doesn’t work for chromedriver.

Use this flow instead:

driver.get('chrome://settings/') zoom = 0.5 #for example 0.5, or 1.5 or 2.0 and so on driver.execute_script(f'chrome.settingsPrivate.setDefaultZoom();') driver.back() 

If you to using Javascript, it will zoom CSS body. But if you need zoom in or out as for CTRL+ or — use mine code.

answered Feb 20, 2023 at 10:26
11 2 2 bronze badges

Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.

Feb 24, 2023 at 1:14

Not sure if it helps as you specifically asked about zooming using Keyboard inputs. I also could not work out why this doesn’t work, even when using action chains with specific key_down and key_up commands it wouldn’t work. However I did find a useful Javascript command that can act as a work around.

self.driver.execute_script("document.body.style.zoom='150%'") 

answered Feb 24, 2022 at 14:01
Marko Delic Marko Delic
96 5 5 bronze badges

  • python
  • selenium
    The Overflow Blog
Related
Hot Network Questions

Subscribe to RSS

Question feed

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2024 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2024.1.17.3574

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zooming browsers using short cut keys such as «CMD+» does not work #7793

Nick-Gottschlich opened this issue Nov 17, 2019 · 2 comments

Zooming browsers using short cut keys such as «CMD+» does not work #7793

Nick-Gottschlich opened this issue Nov 17, 2019 · 2 comments

Comments

Nick-Gottschlich commented Nov 17, 2019 •

�� Bug Report

I am trying to use selenium to control a browser programatically. I would like to be able to send the keys «CMD-» (or «CTRL-«) to zoom out. I have tried every different way I can think of of sending these keys with no luck. I have tested this on both chromedriver and geckodriver on my macbook, and on geckodriver on my raspberry pi.

It looks like this closed issue was reporting a similar bug: #4244

To Reproduce

Expected behavior

I would expect that sending the COMMAND and SUBTRACT keys together would zoom out on mac. Or sending the CONTROL and SUBTRACT keys together would zoom out on windows/linux.

See the script below to see all the code I’ve used to try and get this functionality to happen.

Test script or set of commands reproducing this issue

from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver import ActionChains import time browser = webdriver.Chrome( executable_path='/Users/nicholasgottschlich/Library/SeleniumWebdrivers/chromedriver') # browser = webdriver.Firefox( # executable_path='/Users/nicholasgottschlich/Library/SeleniumWebdrivers/geckodriver') def doit(): browser.get('https://google.com') time.sleep(1) print('start') actions = ActionChains(browser) # actions.send_keys(Keys.COMMAND).perform() # actions.key_down(Keys.COMMAND).send_keys(Keys.SUBTRACT).perform() # actions.key_down(Keys.COMMAND).send_keys('_').perform() # actions.send_keys(Keys.COMMAND, Keys.SUBTRACT, Keys.NULL).perform() # actions.key_down(Keys.COMMAND).send_keys(Keys.SUBTRACT, Keys.NULL).perform() # actions.send_keys(Keys.COMMAND + Keys.SUBTRACT).perform() # actions.send_keys(Keys.COMMAND + Keys.SUBTRACT + Keys.NULL).perform() # html = browser.find_element_by_tag_name("html") # body = browser.find_element_by_tag_name("body") # print(html) # html.send_keys(Keys.COMMAND, Keys.SUBTRACT, Keys.NULL) # html.send_keys(Keys.COMMAND, '-') # body.send_keys(Keys.COMMAND, Keys.SUBTRACT, Keys.NULL) # html.send_keys(Keys.COMMAND + Keys.SUBTRACT + Keys.NULL) print('finish') if __name__ == '__main__': doit()

Environment

OS: macOS Mojave 10.14.6, Raspbian for Raspberry Pi
Browser + version: chromedriver (78.0.3904.97 (Official Build) (64-bit)) and geckodriver 70.0.1 (64-bit)
Browser Driver version: geckodriver: https://github.com/mozilla/geckodriver/releases/tag/v0.26.0 chromedriver: 78.0.3904.70
Language Bindings version: Python 3.7.4

The text was updated successfully, but these errors were encountered:

Selenium WebDriver увеличивает/убирает содержимое страницы

Будьте осторожны, что Selenium предполагает, что уровень масштаба находится на 100%! Например, IE откажется запускаться (выбрасывает исключение), когда уровень масштаба отличается, потому что расположение элемента зависит от этого, и если вы измените уровень масштаба, он будет нажимать на неправильные элементы, в неправильных местах.

Java

Вы можете использовать метод Keys.chord() :

WebElement html = driver.findElement(By.tagName("html")); html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD)); 

Используйте осторожно и, когда все будет готово, сбросьте масштаб обратно на 100%:

html.sendKeys(Keys.chord(Keys.CONTROL, "0")); 

C#

(так как я понял, что привязки в C# не имеют метода Keys.chord() ) Или вы можете использовать API Advanced User Interactions вот так (опять же, код Java, но он должен работать так же в C#):

WebElement html = driver.findElement(By.tagName("html")); new Actions(driver) .sendKeys(html, Keys.CONTROL, Keys.ADD, Keys.NULL) .perform(); 

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

new Actions(driver) .sendKeys(html, Keys.CONTROL, "0", Keys.NULL) .perform(); 

Обратите внимание, что наивный подход

html.sendKeys(Keys.CONTROL, Keys.ADD); 

не работает, потому что ключ Ctrl выпущен в этом методе sendKeys() . sendKeys() WebElement отличается от того, что в Actions . Из-за этого Keys.NULL , используемый в моем решении, обязателен .

Поделиться 22 февраля 2013 в 13:25
Вот два способа изменить уровень масштаба с помощью Java (один для Chrome, а другой для Firefox):

Chrome

При использовании версии 3.3.1 клиентского драйвера Selenium Java и ChromeDriver 2.28, следующее работает (где число в одинарных кавычках представляет уровень масштаба для использования; 1 = 100%, 1.5 = 150% и т.д.):

JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("document.body.style.zoom = '1.5'"); 

Firefox

  1. Вышеупомянутый клиентский драйвер Java
  2. GeckoDriver v0.15.0
  3. Эти классы:
    java.awt.Robot
    java.awt.event.KeyEvent

Прежде всего, создайте экземпляр класса Robot:

Robot robot = new Robot(); 

Этот код приводит к уменьшению уровня масштаба:

robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_MINUS); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyRelease(KeyEvent.VK_MINUS); 

Этот код приводит к увеличению уровня масштаба:

robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_EQUALS); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyRelease(KeyEvent.VK_EQUALS); 

Поделиться 15 апреля 2017 в 00:49

Подход Python работает для меня, за исключением того, что вам нужно указать уровень масштаба:

driver.execute_script("document.body.style.zoom='zoom %'") 

Имейте ‘zoom%’ = любой желаемый уровень масштаба. (например, ‘67%’). Это работает для Chromedriver, который, кажется, не принимает команды send_keys.

Поделиться 17 июля 2015 в 18:57

Изменение уровня масштаба через выполнение JavaScript — это нормально, но оно применяется только к первой отображаемой странице. Последующие страницы вернутся к 100% уровню масштаба. Лучшее решение, которое я нашел до сих пор, — установить коэффициент масштаба устройства в настройках Chrome.

ChromeOptions options = new ChromeOptions(); options.addArguments("force-device-scale-factor=0.75"); options.addArguments("high-dpi-support=0.75"); WebDriver driver = new ChromeDriver(options); 

Поделиться 04 июля 2022 в 04:00

Zoom in | Zoom out Функция на Windows

WebElement html = driver.findElement(By.tagName("html")); html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD)); 
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT)); 

Zoom in | Zoom out Функция на MAC

WebElement html = driver.findElement(By.tagName("html")); html.sendKeys(Keys.chord(Keys.COMMAND, Keys.ADD)); 
html.sendKeys(Keys.chord(Keys.COMMAND, Keys.SUBTRACT)); 

Поделиться 05 сентября 2013 в 11:29

Самый надежный подход

Перед тем, как начать с Internet Explorer и Selenium Webdriver, рассмотрите эти два важных правила.

  1. Уровень масштабирования: Должен быть установлен по умолчанию (100%) и
  2. Настройки зоны безопасности: Должны быть одинаковыми для всех. Настройки безопасности должны быть установлены в соответствии с разрешениями вашей организации.

Как это установить?

Просто перейдите в Internet explorer, сделайте оба элемента вручную. Это все. Без секрета.

Сделайте это через свой код.

Метод 1:

//Move the following line into code format DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true); System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe"); WebDriver driver= new InternetExplorerDriver(capabilities); driver.get(baseURl); //Identify your elements and go ahead testing. 

Это определенно не покажет ошибки, и браузер откроется и также перейдет по URL.

Но это не определит какой-либо элемент, и поэтому вы не можете продолжить.

Почему? Потому что мы просто подавили ошибку и попросили IE открыть и получить этот URL. Однако Selenium будет идентифицировать элементы только если масштаб браузера 100%, т.е. по умолчанию. Таким образом, конечный код будет

Метод 2 Надежный и полный способ доказательства:

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true); System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe"); WebDriver driver= new InternetExplorerDriver(capabilities); driver.get(baseURl); driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,"0")); //This is to set the zoom to default value //Identify your elements and go ahead testing. 

Надеюсь, это поможет. Дайте мне знать, требуется ли дополнительная информация.

Поделиться 25 ноября 2016 в 09:45

Ниже приведен фрагмент кода, который установит масштаб браузера на 80%

String zoomJS; JavascriptExecutor js = (JavascriptExecutor) driver; zoomJS = "document.body.style.zoom='0.8'"; js.executeScript(zoomJS); 

Поделиться 10 мая 2022 в 12:34

Вы можете использовать метод «Keys.chord» для Zoom out и Zoom in

WebElement zoomPage = driver.findElement(By.tagName("html")); zoomPage.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD)) 

когда вы закончили свою работу и хотите сбросить браузер обратно на 100%, то используйте следующий код, если вы хотите нажать на любой элемент, поэтому перед событием click вы можете сбросить окно браузера на 100 % после того, как вы можете нажать на него.

zoomPage.sendKeys(Keys.chord(Keys.CONTROL, "0")); 

Вы также можете использовать код Java-скрипта для Zoom OUT

JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("document.body.style.zoom = '110%'"); 

Поделиться 08 февраля 2018 в 10:33

Я использую Python 3.5.; У меня возникла та же проблема, что и у вас. Я думал, что вам следует использовать Chrome в качестве браузера.

Я использовал PhantomJs, чтобы наконец решить эту проблему:

from selenium.webdriver.common.keys import Keys from selenium import webdriver browser = webdriver.PhantomJS() browser.get('http://www.*.com') print(browser.title) c=browser.find_element_by_tag_name("body") c.send_keys(Keys.LEFT_CONTROL+Keys.Add)` 

Поделиться 02 июня 2017 в 07:46

Для увеличения до 30% (или любого другого значения, которое вы хотите, но в моем случае 30%) используйте

JavascriptExecutor jse = (JavascriptExecutor)driver; jse.executeScript("document.body.style.zoom = '30%';"); 

Поделиться 21 марта 2017 в 09:17

Я знаю, что это поздно, но если вы не хотите использовать класс действий (или получать какие-либо ошибки, как я сделал), вы можете использовать чистый JavaScript для этого.

((IJavaScriptExecutor) Browser.Driver).ExecuteScript("document.body.style.zoom = '70%';");

Поделиться 15 июля 2016 в 02:43

Вы можете установить уровень масштаба для Chrome из ChromeOptions с помощью этого:

options.setUserPreferences( < // Set zoom level to 80% "partition": < "per_host_zoom_levels": < "x": < "localhost": < "last_modified": "13335927042283476", "zoom_level": -1.2239010857415447 >> > > >) 

Поделиться 08 августа 2023 в 00:24

Кажется, что этот подход, предложенный для C#, больше не работает.

Подход для C#, который работает для меня в версии WebDriver 2.5:

 public void ZoomIn() < new Actions(Driver) .SendKeys(Keys.Control).SendKeys(Keys.Add) .Perform(); >public void ZoomOut()

Поделиться 18 февраля 2016 в 11:49

Вы можете использовать драйвер Selenium для выполнения скрипта, который будет увеличивать или уменьшать размеры для вас.

Firefox

await driver.executeScript('document.body.style.MozTransform = "scale(3)"'); await driver.executeScript( 'document.body.style.MozTransformOrigin = "top"' ); 

Это приведет к увеличению на 300% и прокручивает до верха.

Chrome

await driver.executeScript('document.body.style.zoom = "300%"'); 

Поделиться 22 марта 2021 в 23:14

Использование класса Robot сработало для меня:

for(int i=0; i

это увеличит масштаб 3 раза.

Поделиться 12 апреля 2017 в 04:47

var html = page.FindElement(By.XPath("/html")); html.SendKeys(Keys.Control + "0" + Keys.Control); 

Selenium(WebDriver) + zoom браузера.

Фотография

Нашел способ изменения масштаба через JavaScript (Для FireFox — document.body.style.MozTransform = «scale(1.25)»), но при этом масштаб меняется не так, как если бы мы его изменили с помощью CTRL + «+»

Есть ли другой способ изменить масштаб браузера с помощью WebDriver?

#2 achumagin

Отправлено 25 октября 2012 — 08:34

Имитируйте нажатие кнопок ctrl + «+»
ap-test-team.blogspot.com

#3 X-NoNAME

Отправлено 25 октября 2012 — 09:21

Код ниже не работает:

_driver.findElement(By.tagName("body")).sendKeys(Keys.chord(Keys.CONTROL, "+"));

Думаю, что Браузер не будет реагировать на кнопки отправленные через WebDriver, на эти кнопку будет реагировать только сам документ(JavaScript в документе)

#4 appmen

Отправлено 25 октября 2012 — 10:52

для этого можно использовать Джава робот, думаю, должно заработать

#5 barancev

Отправлено 25 октября 2012 — 11:41

А зачем менять масштаб? Если это сделать — selenium нет будет попадать по ссылкам и кнопкам. На всякий случай предупреждаю 🙂

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#6 X-NoNAME

Отправлено 25 октября 2012 — 12:02

для этого можно использовать Джава робот, думаю, должно заработать

Да, с помощью робота — работает:

Robot r = new Robot(); for(int i=0;i <=10;i++)< r.keyPress(KeyEvent.VK_CONTROL); r.delay(50); r.mouseWheel(1); r.delay(50); r.keyRelease(KeyEvent.VK_CONTROL); r.delay(100); >for(int i=0;i

Сейчас ищу простой способ сделать окно браузера активным, без использования JNA.

А зачем менять масштаб? Если это сделать — selenium нет будет попадать по ссылкам и кнопкам. На всякий случай предупреждаю 🙂

Буду проверять смещение элементов друг относительно друга с помощью getLocation().getY(), getX()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *