キー操作自動化
ブラウザに入力された内容の/を?にするだけの作業があったので自動化することに...tabで移動とかめんどくさいけどurlなので/の一括置換もできない...
そこで以下スクリプトを書いて
$ python auto_key_type.py 5
とかしてターミナルで起動後、1秒以内にブラウザに移動すると5回分の操作を勝手にやってくれる!
下のプログラムはchromeのタブを行ったり来たりしてGoogle Spreadsheetの内容を一行づつコピペしてくるやつです
auto_key_type.py
import pyautogui as pgui
from time import sleep
import sys
args = sys.argv
sleep(1)
pgui.FAILSAFE = True
for i in range(int(args[1])):
pgui.typewrite(['right'])
pgui.hotkey('option', 'left')
pgui.hotkey('option', 'left')
pgui.typewrite(['backspace', '?', 'tab', 'tab'])
mouse_cp_paste.py
import pyautogui as pgui
from time import sleep
import sys
args = sys.argv
sleep(1)
pgui.FAILSAFE = True
# 必要に応じてpathを増やす
movie_num = int(args[1])
movie_num -= 10
while( movie_num > 0 ):
print(movie_num)
pgui.hotkey('command', 'down')
pgui.moveTo(613, 673, duration=0.1)
pgui.click(613, 673)
movie_num -= 5
sleep(1)
# マウス移動
pgui.moveTo(350, 350, duration=0.1)
pgui.dragRel(500, 0, duration=0.1)
pgui.hotkey('command', 'c')
pgui.typewrite(['tab'])
pgui.hotkey('command', 'v')
pgui.typewrite(['n', 'o', 'k', 'o', 'u', 'g', 'i', 'enter'])
pgui.typewrite(['tab','tab','tab','tab','tab','tab','tab','tab','tab','tab'])
pgui.typewrite(['down', 'down', 'enter'])
sleep(1)
for j in range(23):
pgui.typewrite(['tab'])
sleep(1)
# spreadsheetからコピー
for i in range(int(args[1])):
pgui.hotkey('command', '2')
pgui.hotkey('command', 'c')
pgui.typewrite(['down'])
pgui.hotkey('command', '3')
pgui.hotkey('command', 'v')
pgui.typewrite(['tab', 'tab'])
# 確認ボタンを押す
pgui.click(10, 703)
pgui.hotkey('command', 'down')
pgui.moveTo(590, 703, duration=0.1)
sleep(0.1)
pgui.click(590, 703)
Selenium
login_then_input.py
import pyautogui as pgui
from time import sleep
import sys
# import pyperclip
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from selenium.webdriver.support.ui import Select
import os
import pandas as pd
import mojimoji
import re
class Register( object ):
name = ""
def __init__( self, args ):
self.name = args[1]
def get_dir_list( self, dir ):
dir_list = os.listdir(dir)
return dir_list
def login( self ):
self.driver = webdriver.Chrome()
self.driver.get('ログインページのURL')
# ID/PASSを入力
id = self.driver.find_element_by_id("UserName")
id.send_keys("ユーザ名")
password = self.driver.find_element_by_id("Password")
password.send_keys("パスワード")
time.sleep(1)
# ログインボタンをクリック
login_button = self.driver.find_element_by_name("LoginButton")
login_button.click()
# サイト内で他の画面に遷移させたければ
self.driver.get( "URL" )
def search_kouza( self ):
# 選択
select_choice_num = self.driver.find_element_by_id("")
select_choice_num = Select(select_choice_num)
select_choice_num.select_by_visible_text( self.name)
# 検索をクリック
search_button = self.driver.find_element_by_name("")
search_button.click()
def change_content( self ):
# 変更
input_q = self.driver.find_element_by_name("")
# input に入力されている文字列
# q_num = input_q.get_attribute('value')[-5:]
input_q.clear()
input_q.send_keys( self.name )
# 確認を押す
confirmation_btn = self.driver.find_element_by_name("")
confirmation_btn.click()
# 登録ボタン
register_button = self.driver.find_element_by_name("")
register_button.click()
# 一覧に戻る
register_button = self.driver.find_element_by_name("")
register_button.click()
def main(self):
sleep(10000)
pgui.FAILSAFE = True
if __name__ == "__main__":
# コマンドライン引数
args = sys.argv
rq = Register( args )
rq.login()
print(rq.name)
rq.change_content()
rq.main()