Googleで設定したズームしようとして発行(chromedriver、セレン、パイソン)

AD:

私は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

私たちは、その後、ズームを変更するには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)

私は非常に必ずこれらの深いネストされた要素にアクセスするための簡単な方法があるのですが、これは私のためによく働きます。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=402420&siteId=1