処理は10行くらい、コメント(適当なので間違ってるかもしれない)を60行くらいつけまくったので大体わかるはず

一瞬にして閉じられるため、閉じたくないなら最後のdriver.quit()を消せばいいです
#これを動かすには、pip install seleniumでseleniumをインストールしていること
#geckodriver.exeをダウンロードし、ソースと同じディレクトリ、またはパスが通ったフォルダ(C:\Users\ユーザー名\AppData\Local\Programs\Python\Python36-32\Scripts とか)に入れておくこと

from selenium import webdriver  #メインAPI
from selenium.webdriver.common.keys import Keys #キー入力
from selenium.webdriver.common.by import By #左のコードをByに略
from selenium.webdriver.support import expected_conditions as EC #左のコードをECに略(下記APIの仲間?)
from selenium.webdriver.support.ui import WebDriverWait #左のコードをWebDriverWaitに略(確実な待ちを実現)



#初期設定
driver=webdriver.Firefox()  #firefoxを開く&インスタンスをゲット
driver.get("https://how-to-use.firebaseapp.com/")   #URLをゲット
wait=WebDriverWait(driver,10)   #最大待ち時間インスタンス




#ゲット(クリッカブルwait)
elem=wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "オマケ")))  #「オマケ」リンク       

'''
★wait.until(EC.~((A,B)))で「A,Bで指定した要素が」「~の状態になったら」ってコード
ここでDOMで表示されるやつとかに待機できる(詳しいやり方は英語だからまだよくわからん)

★~の種類例
element_to_be_clickable ・・・A,Bで指定した要素がクリッカブルになったら
alert_is_present ・・・アラートが出たら?
invisibility_of_element_located ・・・A,Bで指定した要素がinvisibleまたはDOMで表示されてないなら

★A,Bの種類(A,Bでない指定の仕方もある)
By.LINK_TEXT, "リンクされた文字" ・・・リンクされたテクスト

■これを見つける
elem=driver.find_element_by_link_text("リンクの文字列")

■ をそれぞれ見つける
elem=driver.find_element_by_id("passwd-id")
elem=driver.find_element_by_name("passwd")
elem=driver.find_element_by_xpath("//input[@id='passwd-id']")

■他
elem=driver.find_element_by_css_selector("セレクタ名") #「.なんとか、 p#なんとか」みたいな
elem=find_element_by_partial_link_text
elem=find_element_by_tag_name
elem=find_element_by_class_name

■何も見つからない場合
NoSuch ElementExceptionが返る

'''



#ゲットした要素にアクション
elem.click()
'''
■マウス操作
elem.click() ・・・左クリック

■キー操作
elem.send_keys("文字列") ・・・キー入力
elem.send_keys(Kyes.RETURN) ・・・エンター
elem.clear() ・・・入力削除

'''




#その他アクション
driver.save_screenshot("a.png") #スクリーンショット

'''
■例
driver.save_sreenshot("ファイル名") ・・・スクリーンショット
'''




#終了処理
driver.quit()