I found this for java :-
WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
But how to do this using Python? I want to zoom out one level after get requests.
I found this for java :-
WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));
But how to do this using Python? I want to zoom out one level after get requests.
this does the job for Python with selenium (-v 3.141.0)
driver = webdriver.Chrome(executable_path='...')
driver.get("www.stackoverflow.com")
driver.execute_script("document.body.style.zoom='50%'")
You can do something similar where you specify the zoom levels as below:
For example, if my body
has a <div id='values'>
, I could zoom the div using
from selenium import webdriver
def main():
browser = webdriver.Chrome()
browser.set_window_size(1000, 1000)
browser.get("http://yoursite.com")
browser.execute_script("$('#values').css('zoom', 5);")
if __name__ == '__main__':
main()
Or Simply try:
driver.execute_script("document.body.style.zoom='zoom %'")
I looked all over for a solution to zoom out using selenium too, the documentation mentions nothing. Luckily the driver for Firefox (geckodriver) have this on one of their Github issues
I've made a shorthand brief of how to zoom out (and in), that will hopefully make the most sense (or at least that did for me)
#I'm sure this will be interchangeable with the Chrome driver too
driver = webdriver.Firefox()
#Set the focus to the browser rather than the web content
driver.set_context("chrome")
#Create a var of the window
win = driver.find_element_by_tag_name("window")
#Send the key combination to the window itself rather than the web content to zoom out
#(change the "-" to "+" if you want to zoom in)
win.send_keys(Keys.CONTROL + "-")
#Set the focus back to content to re-engage with page elements
driver.set_context("content")
This works for IE
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Ie(executable_path=path_to_driver, capabilities={'ignoreZoomSetting':True})
driver.get(url)
driver.find_element_by_tag_name('html').send_keys(Keys.CONTROL, '0')
Hey guys I had issues with all solutions here using firefox, some solutions didn´t work exactly as expected so with all your help I create this one.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.implicitly_wait(5)
driver.get("https://stackoverflow.com/")
#Set the focus to the browser rather than the web content
driver.set_context("chrome")
#Create a var of the window
win = driver.find_element(By.TAG_NAME,"html")
#for zoom out this will change to 90% if you need more copy and paste it again. Or you can change - to + for zoom in.
win.send_keys(Keys.CONTROL + "-")
#Set the focus back to content to re-engage with page elements
driver.set_context("content")
I tried to reproduce best suggestions here and got the error
driver.set_context("chrome")
AttributeError: 'WebDriver' object has no attribute 'set_context'
I found work around, I need to zoom out for 75%, for that purpose I use pyautogui
import pyautodui
....
pyautogui.keyDown('ctrl')
j: int = 1
for j in range(3):
pyautogui.press('-')
time.sleep(1)
pyautogui.keyUp('ctrl')