在 python Selenium/Firefox 中缩放浏览器 window
Zoom browser window in python Selenium/Firefox
我正在使用 python 通过 selenium 与网页交互。我正在使用 geckodriver Firefox 驱动程序(对 Chrome 解决方案不感兴趣)。
我想缩放浏览器window,相当于按ctrl
+-
(或cmd
+-
在Mac OS).
当然,关于这个话题有很多问题。在发帖之前,我已经尽职尽责地挖掘它们。以下是 对我不起作用 的解决方案(让 driver
成为 WebDriver
实例 运行 geckodriver):
无影响:
driver.execute_script("document.body.style.zoom='zoom 90%'")
from selenium.webdriver.common.keys import Keys
body = driver.find_element_by_tag_name('body')
body.send_keys(Keys.COMMAND, Keys.SUBTRACT)
from selenium.webdriver.common.action_chains import ActionChains
actor = ActionChains(driver)
actor.key_down(Keys.COMMAND).key_down(Keys.SUBTRACT).perform()
错误效果:
driver.execute_script("document.body.style.transform='scale(0.9)'")
driver.execute_script("document.body.style.MozTransform='scale(0.9)'")
错误:
driver.set_context("chrome")
win = driver.find_element_by_tag_name("window")
win.send_keys(Keys.CONTROL + "-")
driver.set_context("content")
(加注 NoSuchElementException
)
相关问题:
- whosebug.com/questions/60941346
- whosebug.com/questions/56193465
...以及许多其他人。
我发现实际有效的唯一方法是 ,但是我宁愿不安装额外的第 3 方库,而且我不相信我能够 运行 这在无头状态下没有很多麻烦。
但是,似乎应该有一些方法可以使用 Selenium/geckodriver 的本机功能来执行此操作,而不是为此目的安装额外的第 3 方软件包。
有办法吗???关于这个主题的大量问题清楚地表明,我不是唯一遇到此问题的人...
编辑: 在 Python 3.9、Selenium 3.141.0、geckodriver 0.29.1、Firefox 90.0 上进行测试,Mac OS
在 Python 3.7.7、selenium 3.141.0、geckodriver 0.29.1、firefox 90.0、Ubuntu 20.04.2 LTS 中,我组合了您的 2 个项目并使其工作。
我也找不到 window 标签,但我找到了正文。在我得到 url 之后(并且只有在之后,否则我得到一个错误),我必须将设置上下文设置为“chrome”。我不知道为什么,但如果不是,正如您观察到的那样,什么也没有发生。然后我可以发送 control + 或 control - 达到预期的效果(我用了两个 + 来真正看到差异,但是 110% 和 120% 也显示出来)。
driver.get(URL)#URL is a constant containing the url
driver.set_context("chrome")#needed to make keys work, must come after there is a context
win = driver.find_element_by_tag_name("body")#there is a body even if not a window
win.send_keys(Keys.CONTROL, "+")#zoom to 110%
win.send_keys(Keys.CONTROL, "+")#zoom to 120%
我正在使用 python 通过 selenium 与网页交互。我正在使用 geckodriver Firefox 驱动程序(对 Chrome 解决方案不感兴趣)。
我想缩放浏览器window,相当于按ctrl
+-
(或cmd
+-
在Mac OS).
当然,关于这个话题有很多问题。在发帖之前,我已经尽职尽责地挖掘它们。以下是 对我不起作用 的解决方案(让 driver
成为 WebDriver
实例 运行 geckodriver):
无影响:
driver.execute_script("document.body.style.zoom='zoom 90%'")
from selenium.webdriver.common.keys import Keys
body = driver.find_element_by_tag_name('body')
body.send_keys(Keys.COMMAND, Keys.SUBTRACT)
from selenium.webdriver.common.action_chains import ActionChains
actor = ActionChains(driver)
actor.key_down(Keys.COMMAND).key_down(Keys.SUBTRACT).perform()
错误效果:
driver.execute_script("document.body.style.transform='scale(0.9)'")
driver.execute_script("document.body.style.MozTransform='scale(0.9)'")
错误:
driver.set_context("chrome")
win = driver.find_element_by_tag_name("window")
win.send_keys(Keys.CONTROL + "-")
driver.set_context("content")
(加注 NoSuchElementException
)
相关问题:
- whosebug.com/questions/60941346
- whosebug.com/questions/56193465
...以及许多其他人。
我发现实际有效的唯一方法是
但是,似乎应该有一些方法可以使用 Selenium/geckodriver 的本机功能来执行此操作,而不是为此目的安装额外的第 3 方软件包。
有办法吗???关于这个主题的大量问题清楚地表明,我不是唯一遇到此问题的人...
编辑: 在 Python 3.9、Selenium 3.141.0、geckodriver 0.29.1、Firefox 90.0 上进行测试,Mac OS
在 Python 3.7.7、selenium 3.141.0、geckodriver 0.29.1、firefox 90.0、Ubuntu 20.04.2 LTS 中,我组合了您的 2 个项目并使其工作。
我也找不到 window 标签,但我找到了正文。在我得到 url 之后(并且只有在之后,否则我得到一个错误),我必须将设置上下文设置为“chrome”。我不知道为什么,但如果不是,正如您观察到的那样,什么也没有发生。然后我可以发送 control + 或 control - 达到预期的效果(我用了两个 + 来真正看到差异,但是 110% 和 120% 也显示出来)。
driver.get(URL)#URL is a constant containing the url
driver.set_context("chrome")#needed to make keys work, must come after there is a context
win = driver.find_element_by_tag_name("body")#there is a body even if not a window
win.send_keys(Keys.CONTROL, "+")#zoom to 110%
win.send_keys(Keys.CONTROL, "+")#zoom to 120%