繁体   English   中英

Python:如何使用 selenium 缩小页面?

[英]Python: How to zoom out of a page using selenium?

我试图在我的 python selenium 程序中缩小到 25%,

它应该从这个缩小: 在此处输入图像描述

对此: 在此处输入图像描述

正如您所看到的,在第一张图片中向下滚动时应该出现的元素在缩小到 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);")在我的程序中没有做任何事情

我测试了第一个选项(第二个选项与此相同)并发现代码运行良好。 但它仅适用于页面元素级别,不适用于 window 级别或 chrome 本身。 您可以通过运行下面的代码来亲眼看看。

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 说:

scope 或多或少受限于 DOM。 曾经有一些支持(不一定是设计的),但我认为所有的网络驱动程序/浏览器都放弃了它。

python selenium 中,sendkey 在 chrome 中不起作用 @soundwave 说:

Webdriver 旨在用于驱动网页,而不是执行特定于浏览器的操作。 请参阅此处bugs.chromium.org

“这是我们在 ChromeDriver 中模拟键盘输入的方式的限制。键直接发送到渲染进程,绕过浏览器进程。因此浏览器进程中的任何键盘快捷键处理程序都不会被调用”

在“ Selenium Chrome Driver send key press combinations to window ”@AndrewRegan 中说:

WebDriver 规范以元素为中心,并且没有定义任何方法来将键发送到 window、屏幕、浏览器 chrome - 仅发送到元素。

使用 Selenium Actions class for Cmd-R 可以在我的 Mac 上运行 Firefox (45),但仅当在前台运行时 - 并且在 Chrome 中似乎根本没有。 据推测,这是由于远程键盘实现的实现差异所致,最好不要依赖它。

所以答案是问题出在网站上,为了能够看到我们应该向下滚动的所有元素,以便加载数据的 rest。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM