selenium ワンタイムパスワード,崩し文字とかでもログインする

chrome プロファイル指定して起動–ログインセッション保持
たいていは一度きりなのでクッキーに保存すれば次回からログインしなくていい


driver.get(url)


mail = driver.find_element(By.ID, "login_handle") # 次に進むボタン
mail.clear()
mail.send_keys("じぶんのあかうんと")  #入力

element = driver.find_element(By.CSS_SELECTOR, '.ar-button_medium_1i9SB [type="ar-button_medium_1i9SB"]') #複数ある
element.click()

# passwordという名前の要素が見つかるまで1秒間待機
password = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "password")))
password.clear()

chkbox = driver.find_element_by_name('rememberMe') 
# チェックボックスが非選択の状態を確認
if not chkbox.is_selected():
    # 非選択の場合はJavaScriptでクリックする
    driver.execute_script("arguments[0].click();", chkbox)

password.send_keys("じぶんのぱすわーどとか")   #パスワード入力
element = driver.find_element(By.ID, "signInSubmit") # ログインボタン
element.click()         # button click

#''' ワンタイムパスワードが必要な場合
# otpCodeという名前の要素が見つかるまで1秒間待機
otpCode = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "otpCode")))
otpCode.clear()

saveScreen()  # 画面キャプチャの関数呼び出し

#ワンタイムパスワード入力
time.sleep(25) # 25s待ってるあいだにワンタイムパスワードを自分で'onetime.txt'にコピペ
# ファイルを読み込んで一行取得
with open('./env/onetime.txt') as f:
    for line in f:
      otpCode.send_keys(line)   #ワンタイムパスワード入力

chkbox = driver.find_element_by_name('rememberDevice') 
# チェックボックスが非選択の状態を確認
if not chkbox.is_selected():
    # 非選択の場合はJavaScriptでクリックする
    driver.execute_script("arguments[0].click();", chkbox)

element = driver.find_element(By.ID, "auth-signin-button") # ログインボタン
element.click() 

スクリーンショット関数化,画像ファイルが複数


Categories:

Tags: