構成分を少なくするためにjupiter lab
で作成したファイルを別のファイルで呼び出したいと考えておりますが、うまくいきません。chromedriver動作ファイル
googleを開く閉じる程度の動作は成功しましたが 長文かログインなどがあるからか呼び出しに反応しません。
呼び出すファイルと呼び出されるファイルを載せてみましたのでどなたかわかる方はご教示お願いいたします。
ちなみに安否報告の自動化についてのスクレイピングファイルを構築しようと考えております。
質問文がインデントが設定できずみづらくすいません。
###呼び出すファイル anpi2.ipynb
import import_ipynb
import anpi2
anpi2.anpi()
anpi2.anpi()
###呼び出されるファイル anpi2.ipynb
def anpi():
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
import requests
def start_chrome():
#chromedriverのPATHを指定(Pythonファイルと同じフォルダの場合)
driver_path = '/Users/nishiharakeita/Desktop/selenium/chromedriver'
#Chrome起動
driver = webdriver.Chrome(executable_path=driver_path)
driver.maximize_window() # 画面サイズ最大化
#安否報告ログインURL
url = 'https://www.sys.mc-anpi.com'
driver.get(url)
return driver
def login_anpihoukoku(driver):
#ログイン情報
login_id = ”○○○○○○"
login_pw = "○○○○○○"
login_pw2 = "○○○○○○"
#最大待機時間(秒)
wait_time = 30
#IDを入力
login_id_xpath = '//[@id="cmpcd"]'
#xpathの要素が見つかるまで待機します。
WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.XPATH, login_id_xpath)))
driver.find_element_by_xpath('//[@id="cmpcd"]').send_keys(login_id)
wait_time = 5
#ID入力
login_pw_xpath = '//[@id="usrcd"]'
#xpathの要素が見つかるまで待機します。
WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.XPATH, login_pw_xpath)))
driver.find_element_by_xpath('//[@id="usrcd"]').send_keys(login_pw)
#パスワード2を入力
login_pw2_xpath = '//[@id="password"]'
#xpathの要素が見つかるまで待機します。
WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.XPATH, login_pw_xpath)))
driver.find_element_by_xpath('//[@id="password"]').send_keys(login_pw2)
time.sleep(1) # クリックされずに処理が終わるのを防ぐために追加。
driver.find_element_by_xpath(login_pw2_xpath).click()
element = driver.find_element_by_xpath('//*[@id="btn-login"]')
element.click()
element = driver.find_element_by_xpath('//*[@id="menu-ap02"]')
element.click()
#スリープ機能を使用することで問題解決
sleep(2)
element = driver.find_element_by_xpath('//*[@id="tbl-dept-grplist"]/tbody/tr/td[3]/a')
element.click()
element = driver.find_element_by_xpath('//*[@id="ans1"]/label[1]')
element.click()
element = driver.find_element_by_xpath('//*[@id="ans2"]/label[1]')
element.click()
element = driver.find_element_by_xpath('//*[@id="ans3"]/label[1]')
element.click()
element = driver.find_element_by_xpath('//*[@id="btn-update"]')
element.click()
#スリープ機能を使用することで問題解決
sleep(2)
element = driver.find_element_by_xpath('//*[@id="btn-confirm-ok"] ')
element.click()
if name == 'main':
#Chromeを起動
driver = start_chrome()
#安否報告にログイン
login_anpihoukoku(driver)
def SendMessage():
line_notify_token = "WUn4hZewRWShFm9DbnNDnj3CdXam19tdAZee3h1TQ4L"
line_notify_api = "https://notify-api.line.me/api/notify"
message = "安否報告完了"
payload = {"message":message} #メッセージの本文
headers = {"Authorization":"Bearer " + line_notify_token}
line_notify = requests.post(line_notify_api, data = payload, headers = headers, )
if name == "main":
SendMessage()
print("Successful")
あなたの回答
tips
プレビュー