구글에 세트 확대하려는 문제 (chromedriver, 셀레늄, 파이썬)

기원 후 :

나는 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)

나는 매우 확실이 깊은 중첩 된 요소에 액세스하는 쉬운 방법이 있어요,하지만 나를 위해 잘 작동합니다.

추천

출처http://10.200.1.11:23101/article/api/json?id=402418&siteId=1