2020年9月1日火曜日

Chrome拡張機能を自動でインストールする【Python】【Selenium】【win32com】

 調べても調べても検索に引っ掛からなかった、Chrome拡張機能を自動でインストールする方法がわかったので、ここに記載する。Teratailありがとう。

必要なもの

  • Python
  • Selenium
  • chromedriver_binary
  • win32com

ソース

 「楽天検索」の拡張機能をChromeにインストールするコードを示す。ソースがはみ出してしまっているのはすみません。

import time
from time import sleep

# selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
# ないと起動しない
import chromedriver_binary
import selenium.webdriver.support.expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import ctypes
import win32com.client

def getOptions():
    options = webdriver.ChromeOptions()
    options.add_argument( '--user-data-dir=' + 'UserData' )
    options.add_argument( '--profile-directory='+ 'Default' )
    return options

def installRakutenSearch():
    # 初回起動、楽天検索拡張機能をインストール
    driver = webdriver.Chrome( options=getOptions() )
    driver.get(r'https://chrome.google.com/webstore/detail/%E6%A5%BD%E5%A4%A9%E3%82%A6%E3%82%A7%E3%83%96%E6%A4%9C%E7%B4%A2/iihkglbebihpaflfihhkfmpabjgdpnol?hl=ja')

    WebDriverWait(driver, 15).until( EC.element_to_be_clickable( (By.XPATH, '//div[@class="g-c-Hf"]') ) )
    driver.find_element_by_xpath( '//div[@class="g-c-Hf"]' ).click() # Chromeに追加 ボタンクリック

    html = driver.page_source

    handle = ctypes.windll.user32.FindWindowW( "Chrome_WidgetWin_1",0)
    ctypes.windll.user32.SetForegroundWindow(handle)

    Shell = win32com.client.Dispatch("WScript.Shell")
    # うまくいかないときは、range(2)からrange(3)へ変更。調整してください。
    for i in range(2):
        Shell.SendKeys("{TAB}") 
        sleep (1)
    Shell.SendKeys("~") 
    time.sleep(5)
    driver.close()
    driver.quit()

if __name__ == '__main__':
    installRakutenSearch()

0 件のコメント:

コメントを投稿