我正在尝试仅使用键盘放大和缩小 Chrome(selenium webdriver)。我努力了 -
from selenium.webdriver.common.keys import Keys
driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL,Keys.SUBTRACT).
但它不工作。需要用 python 回答。
原文由 Dayananda 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试仅使用键盘放大和缩小 Chrome(selenium webdriver)。我努力了 -
from selenium.webdriver.common.keys import Keys
driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL,Keys.SUBTRACT).
但它不工作。需要用 python 回答。
原文由 Dayananda 发布,翻译遵循 CC BY-SA 4.0 许可协议
环境:
我尝试了人们过去在其他问题中建议的方法(不使用 CSS)。例如,这个问题的答案: Selenium webdriver zoom in/out page content 。
或者这个: 在浏览器上测试页面的缩放级别
没有成功。
所以,我想:如果没有捷径,还有什么不同的方法可以做到这一点?
这个想法是使用“chrome://settings/”页面来改变缩放:
好的,我知道,例如 通过 Selenium 的 Going through Chrome://settings ,每个设置都应该在 ChromeOptions 中设置。
从 这个问题 中,我注意到在 首选项列表中,唯一的参数(我认为)可能是:
// Double that indicates the default zoom level.
const char kPartitionDefaultZoomLevel[] = "partition.default_zoom_level";
我试过了,没有成功。
我想重复一遍,我知道这不是正确的方法(不同的浏览器版本会有所不同),但它有效,至少对我了解如何使用 selenium 进入影子根元素很有用.
以下方法返回影子根内的元素:
def expand_shadow_element(element):
shadow_root = driver.execute_script('return arguments[0].shadowRoot', element)
return shadow_root
它很有用,因为在 chrome://settings/
页面中有影子根元素。
为了在我的浏览器中执行此操作,这是路径:
root1=driver.find_element_by_xpath("*//settings-ui")
shadow_root1 = expand_shadow_element(root1)
container= shadow_root1.find_element_by_id("container")
root2= container.find_element_by_css_selector("settings-main")
shadow_root2 = expand_shadow_element(root2)
root3=shadow_root2.find_element_by_css_selector("settings-basic-page")
shadow_root3 = expand_shadow_element(root3)
basic_page = shadow_root3.find_element_by_id("basicPage")
settings_section= basic_page.find_element_by_xpath(".//settings-section[@section='appearance']")
root4= settings_section.find_element_by_css_selector("settings-appearance-page")
shadow_root4=expand_shadow_element(root4)
最后:
settings_animated_pages= shadow_root4.find_element_by_id("pages")
neon_animatable=settings_animated_pages.find_element_by_css_selector("neon-animatable")
zoomLevel= neon_animatable.find_element_by_xpath(".//select[@id='zoomLevel']/option[@value='0.5']")
zoomLevel.click()
整个代码:
driver = webdriver.Chrome(executable_path=r'/pathTo/chromedriver')
def expand_shadow_element(element):
shadow_root = driver.execute_script('return arguments[0].shadowRoot', element)
return shadow_root
driver.get('chrome://settings/')
root1=driver.find_element_by_xpath("*//settings-ui")
shadow_root1 = expand_shadow_element(root1)
container= shadow_root1.find_element_by_id("container")
root2= container.find_element_by_css_selector("settings-main")
shadow_root2 = expand_shadow_element(root2)
root3=shadow_root2.find_element_by_css_selector("settings-basic-page")
shadow_root3 = expand_shadow_element(root3)
basic_page = shadow_root3.find_element_by_id("basicPage")
settings_section= basic_page.find_element_by_xpath(".//settings-section[@section='appearance']")
root4= settings_section.find_element_by_css_selector("settings-appearance-page")
shadow_root4=expand_shadow_element(root4)
settings_animated_pages= shadow_root4.find_element_by_id("pages")
neon_animatable=settings_animated_pages.find_element_by_css_selector("neon-animatable")
zoomLevel= neon_animatable.find_element_by_xpath(".//select[@id='zoomLevel']/option[@value='0.5']")
zoomLevel.click()
driver.get("https://www.google.co.uk/")
编辑
正如 @Florent B 在评论中所 建议 的那样,我们可以获得简单的相同结果:
driver.get('chrome://settings/')
driver.execute_script('chrome.settingsPrivate.setDefaultZoom(1.5);')
driver.get("https://www.google.co.uk/")
原文由 Davide Patti 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
我只是在为此苦苦挣扎。我设法找到了适合我的东西,希望它对你有用:
有’zoom%’ = 你想要的任何缩放级别。 (例如“67%”)