end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

python3 + selenium4 + msedgedriver.exe v100 による edgeブラウザの自動化

久しぶりに、python3 + selenium3 で、edgeを操作しようとしたところ、 様々なエラーが発生し動作しませんでした。

そこで、「pip install selenium==4.1.3」により、seleniumを最新化し、 以下のような python scriptで動作させるまでに至りました。

#!python3
# -*- coding: utf-8 -*-

import os
from selenium import webdriver # ex. pip install selenium==4.1.3
from selenium.webdriver.edge.options import Options
from selenium.webdriver.edge.service import Service

browser_conf = {
    # https://docs.microsoft.com/ja-jp/microsoft-edge/webdriver-chromium/
    # PS> .\msedgedriver.exe --version
    # MSEdgeDriver 100.0.1185.29 (1feddedadb2184120dec3f8943e514a865a2930a)
    # PS> .\msedgedriver.exe --help
    "browser_driver": os.getcwd() + "\\msedgedriver.exe",
    "browser_options" : [
        "headless",
    ],
    "implicitly_wait": 10
}

def main():
    browser = init_browser()

    browser.get('https://www.yahoo.co.jp')
    browser.get_screenshot_as_file(os.getcwd() +"\\screen_captuer.png")

    
def init_browser():
    browser_service = Service(
        executable_path=browser_conf["browser_driver"] )
    
    browser_opts = Options()
    for tmp_opt in browser_conf["browser_options"]:
        browser_opts.add_argument( tmp_opt )

    browser = webdriver.Edge(service = browser_service,
                             options = browser_opts )
    # 要素が見つかるまで、最大 ?秒 待つ
    browser.implicitly_wait( browser_conf["implicitly_wait"] )
    return browser

if __name__ == '__main__':
    main()