我正在尝试将谷歌chrome缩放设置为80%。
from selenium import webdriver
class bot:
def __init__(self):
self.driver = webdriver.Chrome("chromedriver path here")
def zoomOut(self):
driver = self.driver
driver.get('chrome://settings/')
driver.find_element_by_xpath('//*[@id="zoomLevel"]').sendKeys('80').sendKeys(Keys.ENTER)
if __name__ == "__main__":
bot = bot()
bot.zoomOut()
如果您能就如何解决这个问题提供任何帮助,我们将不胜感激。
更新:我在查找能够设置缩放值的xpath时出错。
这是一个有趣的问题。这很困难,因为设置元素嵌套在一堆阴影根(类似于iFrame的"sub-dom"(中。它嵌套得很深,使用起来有点痛苦
var selectBox = document.querySelector("settings-ui").shadowRoot.querySelector("#main").shadowRoot.querySelector("settings-basic-page").shadowRoot.querySelector("settings-appearance-page").shadowRoot.querySelector("#zoomLevel");
var changeEvent = new Event("change");
selectBox.value = arguments[0];
selectBox.dispatchEvent(changeEvent); // Trigger change event to change the zoom
然后,我们可以将其放入python方法中,以更改缩放。
class Bot:
def change_zoom(self, new_zoom):
"""
:param new_zoom: zoom level as a percentage
"""
change_js = """
var selectBox = document.querySelector("settings-ui").shadowRoot.querySelector("#main").shadowRoot.querySelector("settings-basic-page").shadowRoot.querySelector("settings-appearance-page").shadowRoot.querySelector("#zoomLevel");
var changeEvent = new Event("change");
selectBox.value = arguments[0];
selectBox.dispatchEvent(changeEvent);
"""
self.driver.get("chrome://settings/")
new_zoom = round(new_zoom / 100, 2)
self.driver.execute_script(change_js, new_zoom)
我确信有一种更简单的方法可以访问这些深度嵌套的元素,但这对我来说很好