Selenium でgoogleログイン

ALL
スポンサーリンク

下記の記事で紹介した Selenium でgoogleログインする場合です。

ブラウザ操作を自動化する Selenium を Python から使う場合のメモ パソコン鳥のブログ

headlessモードかどうかで、googleログイン画面の要素が異なるようです。
ログインIDの入力箇所が、headlessモード時はID が Email、通常時は ID が identifierId となっています。
同様にパスワード入力箇所も、Passwd と password となっています。

そこで、headlessモードに関わらず動作OKにするには下記のように書きます。
XPATH 指定で、「//*[@id=”identifierId”]|//*[@id=”Email”]」のように、「|」で区切って書けば OR条件で書けます。

import os
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions# Chromのパス(Linuxの場合)
CHROME_BIN = ‘/usr/bin/chromium-browser’
# Chromのパス(Windowsの場合)
CHROME_BIN = ‘C:\Program Files (x86)\Google\Chrome\Application\chrome.exe’

# Seleniumドライバーのパス(Linuxの場合)
CHROME_DRIVER = os.path.expanduser(‘chromedriver’)
# Seleniumドライバーのパス(Windowsの場合)
CHROME_DRIVER = os.path.expanduser(‘chromedriver.exe’)

# URL
URL = ‘https://accounts.google.com

# Chromeの初期設定
options = Options()
options.binary_location = CHROME_BIN
#options.add_argument(‘–headless’)
options.add_argument(‘–window-size=1024,768’)

driver = webdriver.Chrome(CHROME_DRIVER, chrome_options=options)

driver.get(URL)

element = WebDriverWait(driver, TIME_OUT).until(
expected_conditions.presence_of_element_located( (By.XPATH, ‘//*[@id=”identifierId”]|//*[@id=”Email”]’) )
)
element.send_keys( ‘XXXXXXX@gmail.com’ + Keys.ENTER )

element = WebDriverWait(driver, TIME_OUT).until(
expected_conditions.presence_of_element_located( (By.XPATH, ‘//*[@id=”password”]/div[1]/div/div[1]/input|//*[@id=”Passwd”]’) )
)
element.send_keys( ‘XXXXXXXXX’ + Keys.ENTER )

コメント