기원 후 :
나는 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이 유사한 "서브 DOM") 그림자 뿌리의 무리에 중첩되어 있기 때문 어렵다. 그것은 매우 깊은 중첩, 그리고 고통의 비트가 얻을 수 있습니다. 여기가 우리를 얻는다 일부 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); // Trigger change event to change the zoom
우리는 다음 줌을 변경하기 위해 파이썬 방법이 넣을 수 있습니다.
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)
나는 매우 확실이 깊은 중첩 된 요소에 액세스하는 쉬운 방법이 있어요,하지만 나를 위해 잘 작동합니다.