作者:彼岸花2011的冬天_290 | 来源:互联网 | 2023-05-25 13:03
我试图只使用键盘放大和放大Chrome(selenium webdriver).我试过了 -
from selenium.webdriver.common.keys import Keys
driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL,Keys.SUBTRACT).
但它不起作用.需要在python中回答.
1> Ben..:
我只是在努力解决这个问题.我设法找到适合我的东西,希望它适合你:
driver.execute_script("document.body.style.zoom='zoom %'")
'zoom%'=您想要的任何缩放级别.(例如'67%')
对我来说,它不适用于Selenium 2.53和Firefox
2> Davide Patti..:
环境:
硒3.6.0
chromedriver 2.33
Chrome版本62.0.3202.75(官方版)(64位)
macOS Sierra 10.12.6
我尝试了过去人们在其他问题中提出的方法(不使用CSS).例如,这个问题的答案:Selenium webdriver放大/缩小页面内容.
或者:在浏览器上测试页面的缩放级别
没有成功.
所以,我想:如果没有快捷方式,那可能是另一种方式呢?
我们的想法是使用"chrome:// settings /"页面来改变缩放:
好的,我知道,例如来自Selenium的Chrome浏览器设置://应该在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/")
3> 小智..:
我的Firefox解决方案,
缩放身体浏览器
zoom是非标准属性,请改用transform(演示):
driver.execute_script("document.body.style.transform = 'scale(0.8)'")
https://github.com/SeleniumHQ/selenium/issues/4244
driver.execute_script('document.body.style.MozTransform = "scale(0.50)";')
driver.execute_script('document.body.style.MozTransformOrigin = "0 0";')