環境python3.5.3
seleniumを使ってあるサイトを開いた時にログインしてその際色々な処理をするんですが
全ての作業が終わったら一度ウィンドウを全て閉じてその後再度同じサイトを開いて
別のIDでログインして作業を繰り返すプログラムを作ろうとしています
プログラムの全体像としては
1.seleniumを使ってサイトを開きIDやパスを入力するのを関数で定義
2.その後開いたサイト内で行う様々な処理に関しても別々の関数で定義
3.プログラムの末尾にfor文を使って予め作ったIDとパスのリスト分の回数だけループさせる処理を書いておくです
python
1from selenium import webdriver 2from selenium.webdriver.support.ui import Select 3 4 5id=[-----] 6pas=[-----] 7 8def login(i): 9 #ログイン画面にアクセス 10 driver_path = "c:/driver/chromedriver.exe" 11 driver = webdriver.Chrome(driver_path) 12 driver.maximize_window() 13 driver.get("http:////////////////") 14 15 #IDとパスを入力 16 search_id=driver.find_element_by_id("login_id") 17 search_id.send_keys("-------+"+id[i]+"@gmail.com") 18 search_pass=driver.find_element_by_id("password") 19 search_pass.send_keys(pas[i]) 20 search_btn=driver.find_element_by_class_name("btn-login.btn") 21 search_btn.click() 22 23def 何かしらの処理1 24 25def 何かしらの処理2 26 27以下続く 28 29for i in range(10): 30 login(i) 31 def 1 32 def 2 33 driver.quit() 34 35
この処理をしようとしたら最後の行のdriver.quit()でエラーが起こりました
恐らく関数内で定義した変数driverを外から操作出来ないというエラーです
その後プログラムを少し変えて
python
1from selenium import webdriver 2from selenium.webdriver.support.ui import Select 3 4 5id=[-----] 6pas=[-----] 7 8def login(i): 9 if i>0.5: 10 driver.quit() 11 #ログイン画面にアクセス 12 driver_path = "c:/driver/chromedriver.exe" 13 driver = webdriver.Chrome(driver_path) 14 driver.maximize_window() 15 driver.get("http:////////////////") 16 17 #IDとパスを入力 18 search_id=driver.find_element_by_id("login_id") 19 search_id.send_keys("-------+"+id[i]+"@gmail.com") 20 search_pass=driver.find_element_by_id("password") 21 search_pass.send_keys(pas[i]) 22 search_btn=driver.find_element_by_class_name("btn-login.btn") 23 search_btn.click() 24 25def 何かしらの処理1 26 27def 何かしらの処理2 28 29以下続く 30 31for i in range(10): 32 login(i) 33 def 1 34 def 2 35
def login()関数の最初の部分に
if i>0.5:driver.quit()
をつけてlogin関数が2回目以降に呼び出された時にウィンドウを閉じる動作をさせようと考えましたが、これも
UnboundLocalError: local variable 'driver' referenced before assignment
この様なエラーが出てきて(恐らく1回目と2回目で名前はdriverという名で一緒でも別々の変数扱いされてるもよう)
うまく動かせません
これはどうすれば全ての処理を行った後(for文内で呼び出した全ての関数の処理が終了)ウィンドウを閉じて再度新しいウィンドウからログインさせる動作が出来ますでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。