In [214]:
#import urllib
#from selenium.webdriver.common.action_chains import ActionChains
#from selenium.webdriver.common.keys import Keys
#path = "//*[@id='idRandomPic']"
#for k in driver.find_elements_by_xpath(path):
#    items = []
#    src = (k.get_attribute('src')).encode('utf8')
#    items.append(src)
#    print items
#    driver.save_screenshot('screenshot.png')
#    ActionChains(driver).move_to_element(k).context_click(k).perform()
#    ActionChains(driver).send_keys('v').perform()

In [1]:
from selenium import webdriver
from PIL import Image

In [2]:
driver = webdriver.Chrome('C:/Users/Yen/Desktop/chromedriver.exe')
#driver = webdriver.Firefox()

In [3]:
driver.get('http://railway.hinet.net/ctno1.htm')

In [4]:
pageSource = driver.page_source

In [5]:
print(pageSource)


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
	<title>車次訂單程票</title>
	<meta http-equiv="Content-Type" content="text/html; charset=big5" />
	<meta http-equiv="Pragma" content="no-cache" />
	<meta http-equiv="Cache-Control" content="no-cache, no-store, max-age=0, must-revalidate" />
	<meta http-equiv="Expires" content="0" />
	<link href="./CssStyle/master.css" rel="stylesheet" type="text/css" />
	<style type="text/css">
		input, select {font-family:Arial;}
	</style>
</head>
<body onload="checkSpecialTrainBoxChi(false)">
<div><a href="#" accesskey="C" title="中間主要內容區,此區塊呈現網頁的網頁內容">:::</a></div>
<table width="100%" border="0">
	<tbody><tr>
		<td background="./Images/title_bg.jpg" style="text-align:left"><img src="./Images/title_01.jpg" alt="車次訂單程票" /></td>
	</tr>
</tbody></table>
<br />
<form method="POST" action="/check_ctno1.jsp" name="ctno1" onsubmit="checkSpecialTrainBoxChi(true); return true;">
<table border="0" cellpadding="5" cellspacing="5">
	<caption style="visibility:hidden; display:none;">各項訂票資料輸入欄位</caption>
	<tbody><tr style="visibility:hidden; display:none;">
		<th>欄位名稱</th>
		<th>輸入內容</th>
	</tr>
	<tr>
		<td width="10%" class="brown02"><label for="person_id">身分證字號</label>:</td>
		<td width="90%"><input type="text" name="person_id" id="person_id" /> <a href="./net_eng.htm" title="外國旅客訂票"><img src="./Images/ToEngButton.gif" style="cursor:pointer; border:0;" alt="外國旅客訂票" /></a></td>
	</tr>
	<tr>
		<td class="brown02"><label for="from_station">起站代碼</label>:</td>
		<td>
			<select name="from_station" id="from_station" onchange="checkSpecialTrainBoxChi(false)">
<option selected="" value="004">004-台東</option>
<option value="008">008-鹿野</option>
<option value="009">009-瑞源</option>
<option value="012">012-關山</option>
<option value="015">015-池上</option>
<option value="018">018-富里</option>
<option value="020">020-東竹</option>
<option value="022">022-東里</option>
<option value="025">025-玉里</option>
<option value="029">029-瑞穗</option>
<option value="031">031-富源</option>
<option value="034">034-光復</option>
<option value="035">035-萬榮</option>
<option value="036">036-鳳林</option>
<option value="037">037-南平</option>
<option value="040">040-豐田</option>
<option value="041">041-壽豐</option>
<option value="043">043-志學</option>
<option value="045">045-吉安</option>
<option value="051">051-花蓮</option>
<option value="052">052-北埔</option>
<option value="054">054-新城</option>
<option value="055">055-崇德</option>
<option value="056">056-和仁</option>
<option value="057">057-和平</option>
<option value="062">062-南澳</option>
<option value="063">063-東澳</option>
<option value="066">066-蘇澳</option>
<option value="067">067-蘇澳新</option>
<option value="069">069-冬山</option>
<option value="070">070-羅東</option>
<option value="072">072-二結</option>
<option value="073">073-宜蘭</option>
<option value="074">074-四城</option>
<option value="075">075-礁溪</option>
<option value="077">077-頭城</option>
<option value="079">079-龜山</option>
<option value="080">080-大溪</option>
<option value="081">081-大里</option>
<option value="083">083-褔隆</option>
<option value="084">084-貢寮</option>
<option value="085">085-雙溪</option>
<option value="086">086-牡丹</option>
<option value="087">087-三貂嶺</option>
<option value="088">088-猴硐</option>
<option value="089">089-瑞芳</option>
<option value="090">090-四腳亭</option>
<option value="092">092-基隆</option>
<option value="093">093-八堵</option>
<option value="094">094-七堵</option>
<option value="096">096-汐止</option>
<option value="097">097-南港</option>
<option value="098">098-松山</option>
<option value="100">100-台北</option>
<option value="101">101-萬華</option>
<option value="102">102-板橋</option>
<option value="103">103-樹林</option>
<option value="104">104-山佳</option>
<option value="105">105-鶯歌</option>
<option value="106">106-桃園</option>
<option value="107">107-內壢</option>
<option value="108">108-中壢</option>
<option value="109">109-埔心</option>
<option value="110">110-楊梅</option>
<option value="111">111-富岡</option>
<option value="112">112-湖口</option>
<option value="113">113-新豐</option>
<option value="114">114-竹北</option>
<option value="115">115-新竹</option>
<option value="118">118-竹南</option>
<option value="119">119-談文</option>
<option value="120">120-大山</option>
<option value="121">121-後龍</option>
<option value="123">123-白沙屯</option>
<option value="124">124-新埔</option>
<option value="125">125-通霄</option>
<option value="126">126-苑裡</option>
<option value="127">127-日南</option>
<option value="128">128-大甲</option>
<option value="129">129-台中港</option>
<option value="130">130-清水</option>
<option value="131">131-沙鹿</option>
<option value="132">132-龍井</option>
<option value="133">133-大肚</option>
<option value="134">134-追分</option>
<option value="135">135-造橋</option>
<option value="137">137-苗栗</option>
<option value="139">139-銅鑼</option>
<option value="140">140-三義</option>
<option value="142">142-泰安</option>
<option value="143">143-后里</option>
<option value="144">144-豐原</option>
<option value="145">145-潭子</option>
<option value="146">146-台中</option>
<option value="147">147-烏日</option>
<option value="148">148-成功</option>
<option value="149">149-彰化</option>
<option value="150">150-花壇</option>
<option value="151">151-員林</option>
<option value="153">153-社頭</option>
<option value="154">154-田中</option>
<option value="155">155-二水</option>
<option value="156">156-林內</option>
<option value="158">158-斗六</option>
<option value="159">159-斗南</option>
<option value="161">161-大林</option>
<option value="162">162-民雄</option>
<option value="163">163-嘉義</option>
<option value="164">164-水上</option>
<option value="166">166-後壁</option>
<option value="167">167-新營</option>
<option value="169">169-林鳳營</option>
<option value="170">170-隆田</option>
<option value="171">171-拔林</option>
<option value="172">172-善化</option>
<option value="173">173-新市</option>
<option value="174">174-永康</option>
<option value="175">175-台南</option>
<option value="176">176-保安</option>
<option value="177">177-中洲</option>
<option value="178">178-大湖</option>
<option value="179">179-路竹</option>
<option value="180">180-岡山</option>
<option value="181">181-橋頭</option>
<option value="183">183-楠梓</option>
<option value="184">184-左營</option>
<option value="185">185-高雄</option>
<option value="186">186-鳳山</option>
<option value="187">187-後庄</option>
<option value="188">188-九曲堂</option>
<option value="190">190-屏東</option>
<option value="193">193-西勢</option>
<option value="194">194-竹田</option>
<option value="195">195-潮州</option>
<option value="197">197-南州</option>
<option value="199">199-林邊</option>
<option value="200">200-佳冬</option>
<option value="203">203-枋寮</option>
<option value="204">204-加祿</option>
<option value="211">211-大武</option>
<option value="213">213-瀧溪</option>
<option value="215">215-金崙</option>
<option value="217">217-太麻里</option>
<option value="219">219-知本</option>
<option value="220">220-康樂</option>
<option value="223">223-大慶</option>
<option value="232">232-十分</option>
<option value="235">235-平溪</option>
<option value="248">248-內灣</option>
<option value="256">256-車埕</option>
<option value="280">280-新烏日</option>
<option value="282">282-南科</option>
<option value="288">288-新左營</option>

			</select>
		</td>
	</tr>
	<tr>
		<td class="brown02"><label for="to_station">到站代碼</label>:</td>
		<td>
			<select name="to_station" id="to_station" onchange="checkSpecialTrainBoxChi(false)">
<option selected="" value="004">004-台東</option>
<option value="008">008-鹿野</option>
<option value="009">009-瑞源</option>
<option value="012">012-關山</option>
<option value="015">015-池上</option>
<option value="018">018-富里</option>
<option value="020">020-東竹</option>
<option value="022">022-東里</option>
<option value="025">025-玉里</option>
<option value="029">029-瑞穗</option>
<option value="031">031-富源</option>
<option value="034">034-光復</option>
<option value="035">035-萬榮</option>
<option value="036">036-鳳林</option>
<option value="037">037-南平</option>
<option value="040">040-豐田</option>
<option value="041">041-壽豐</option>
<option value="043">043-志學</option>
<option value="045">045-吉安</option>
<option value="051">051-花蓮</option>
<option value="052">052-北埔</option>
<option value="054">054-新城</option>
<option value="055">055-崇德</option>
<option value="056">056-和仁</option>
<option value="057">057-和平</option>
<option value="062">062-南澳</option>
<option value="063">063-東澳</option>
<option value="066">066-蘇澳</option>
<option value="067">067-蘇澳新</option>
<option value="069">069-冬山</option>
<option value="070">070-羅東</option>
<option value="072">072-二結</option>
<option value="073">073-宜蘭</option>
<option value="074">074-四城</option>
<option value="075">075-礁溪</option>
<option value="077">077-頭城</option>
<option value="079">079-龜山</option>
<option value="080">080-大溪</option>
<option value="081">081-大里</option>
<option value="083">083-褔隆</option>
<option value="084">084-貢寮</option>
<option value="085">085-雙溪</option>
<option value="086">086-牡丹</option>
<option value="087">087-三貂嶺</option>
<option value="088">088-猴硐</option>
<option value="089">089-瑞芳</option>
<option value="090">090-四腳亭</option>
<option value="092">092-基隆</option>
<option value="093">093-八堵</option>
<option value="094">094-七堵</option>
<option value="096">096-汐止</option>
<option value="097">097-南港</option>
<option value="098">098-松山</option>
<option value="100">100-台北</option>
<option value="101">101-萬華</option>
<option value="102">102-板橋</option>
<option value="103">103-樹林</option>
<option value="104">104-山佳</option>
<option value="105">105-鶯歌</option>
<option value="106">106-桃園</option>
<option value="107">107-內壢</option>
<option value="108">108-中壢</option>
<option value="109">109-埔心</option>
<option value="110">110-楊梅</option>
<option value="111">111-富岡</option>
<option value="112">112-湖口</option>
<option value="113">113-新豐</option>
<option value="114">114-竹北</option>
<option value="115">115-新竹</option>
<option value="118">118-竹南</option>
<option value="119">119-談文</option>
<option value="120">120-大山</option>
<option value="121">121-後龍</option>
<option value="123">123-白沙屯</option>
<option value="124">124-新埔</option>
<option value="125">125-通霄</option>
<option value="126">126-苑裡</option>
<option value="127">127-日南</option>
<option value="128">128-大甲</option>
<option value="129">129-台中港</option>
<option value="130">130-清水</option>
<option value="131">131-沙鹿</option>
<option value="132">132-龍井</option>
<option value="133">133-大肚</option>
<option value="134">134-追分</option>
<option value="135">135-造橋</option>
<option value="137">137-苗栗</option>
<option value="139">139-銅鑼</option>
<option value="140">140-三義</option>
<option value="142">142-泰安</option>
<option value="143">143-后里</option>
<option value="144">144-豐原</option>
<option value="145">145-潭子</option>
<option value="146">146-台中</option>
<option value="147">147-烏日</option>
<option value="148">148-成功</option>
<option value="149">149-彰化</option>
<option value="150">150-花壇</option>
<option value="151">151-員林</option>
<option value="153">153-社頭</option>
<option value="154">154-田中</option>
<option value="155">155-二水</option>
<option value="156">156-林內</option>
<option value="158">158-斗六</option>
<option value="159">159-斗南</option>
<option value="161">161-大林</option>
<option value="162">162-民雄</option>
<option value="163">163-嘉義</option>
<option value="164">164-水上</option>
<option value="166">166-後壁</option>
<option value="167">167-新營</option>
<option value="169">169-林鳳營</option>
<option value="170">170-隆田</option>
<option value="171">171-拔林</option>
<option value="172">172-善化</option>
<option value="173">173-新市</option>
<option value="174">174-永康</option>
<option value="175">175-台南</option>
<option value="176">176-保安</option>
<option value="177">177-中洲</option>
<option value="178">178-大湖</option>
<option value="179">179-路竹</option>
<option value="180">180-岡山</option>
<option value="181">181-橋頭</option>
<option value="183">183-楠梓</option>
<option value="184">184-左營</option>
<option value="185">185-高雄</option>
<option value="186">186-鳳山</option>
<option value="187">187-後庄</option>
<option value="188">188-九曲堂</option>
<option value="190">190-屏東</option>
<option value="193">193-西勢</option>
<option value="194">194-竹田</option>
<option value="195">195-潮州</option>
<option value="197">197-南州</option>
<option value="199">199-林邊</option>
<option value="200">200-佳冬</option>
<option value="203">203-枋寮</option>
<option value="204">204-加祿</option>
<option value="211">211-大武</option>
<option value="213">213-瀧溪</option>
<option value="215">215-金崙</option>
<option value="217">217-太麻里</option>
<option value="219">219-知本</option>
<option value="220">220-康樂</option>
<option value="223">223-大慶</option>
<option value="232">232-十分</option>
<option value="235">235-平溪</option>
<option value="248">248-內灣</option>
<option value="256">256-車埕</option>
<option value="280">280-新烏日</option>
<option value="282">282-南科</option>
<option value="288">288-新左營</option>

			</select>
		</td>
	</tr>
	<tr>
		<td class="green01"><label for="getin_date">乘車日期</label>:</td>
		<td>
			<select name="getin_date" id="getin_date" onchange="checkSpecialTrainBoxChi(false)">
<option selected="" value="2017/08/31-00">2017/08/31【四】</option>
<option value="2017/09/01-01">2017/09/01【五】</option>
<option value="2017/09/02-02">2017/09/02【六】</option>
<option value="2017/09/03-03">2017/09/03【日】</option>
<option value="2017/09/04-04">2017/09/04【一】</option>
<option value="2017/09/05-05">2017/09/05【二】</option>
<option value="2017/09/06-06">2017/09/06【三】</option>
<option value="2017/09/07-07">2017/09/07【四】</option>
<option value="2017/09/08-08">2017/09/08【五】</option>
<option value="2017/09/09-09">2017/09/09【六】</option>
<option value="2017/09/10-10">2017/09/10【日】</option>
<option value="2017/09/11-11">2017/09/11【一】</option>
<option value="2017/09/12-12">2017/09/12【二】</option>
<option value="2017/09/13-13">2017/09/13【三】</option>
<option value="2017/09/14-14">2017/09/14【四】</option>

			</select>
		</td>
	</tr>
	<tr>
		<td class="green01"><label for="train_no">車次代碼</label>:</td>
		<td>
			<input type="text" name="train_no" id="train_no" onblur="checkSpecialTrainBoxChi(false)" />
			<span id="boxDesc" style="display:none;"></span>
		</td>
	</tr>
	<tr>
		<td class="green01"><label for="order_qty_str">訂票張數</label>:</td>
		<td>
			<div id="boxNorm" style="display:block;">
					<select name="order_qty_str" id="order_qty_str" onchange="document.forms[0].n_order_qty_str.value=this.value">
						<option value="1" selected="">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
						<option value="5">5</option>
						<option value="6">6</option>
					</select>
			</div>
			<div id="boxTour" style="display:none;">
					<select name="t_order_qty_str" id="t_order_qty_str">
						<option value="0" selected="">0</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
						<option value="5">5</option>
						<option value="6">6</option>
					</select>
			</div>
			<div id="boxSpec" style="display:none;">
				<div id="boxSpecN" style="display:none;">
					<span><label for="n_order_qty_str">一般車廂</label>:</span>
					<select name="n_order_qty_str" id="n_order_qty_str" onchange="document.forms[0].order_qty_str.value=this.value">
						<option value="0" selected="">0</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
						<option value="5">5</option>
						<option value="6">6</option>
					</select> 張
				</div>
				<div id="boxSpecD" style="display:none;">
					<span><label for="d_order_qty_str">商務車廂</label>:</span>
					<select name="d_order_qty_str" id="d_order_qty_str">
						<option value="0" selected="">0</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
						<option value="5">5</option>
						<option value="6">6</option>
					</select> 張
				</div>
				<div id="boxSpecB" style="display:none;">
					<span><label for="b_order_qty_str">兩鐵車廂</label>:</span>
					<select name="b_order_qty_str" id="b_order_qty_str" onchange="document.getElementById('boxB02').innerHTML=document.getElementById('boxB01').innerHTML=this.value;">
						<option value="0" selected="">0</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
						<option value="5">5</option>
						<option value="6">6</option>
					</select> 張(含 <span id="boxB01">0</span> 人及 <span id="boxB02">0</span> 車輛)
				</div>
				<div id="boxSpecZ" style="display:none;">
					<span><label for="z_order_qty_str">桌型座位</label>:</span>
					<select name="z_order_qty_str" id="z_order_qty_str">
						<option value="0" selected="">0</option>
						<option value="4">4</option>
					</select> 張<span id="boxZ"></span>
				</div>
			</div>
		</td>
	</tr>
	<tr>
		<td colspan="2">
			<p class="orange02">
				<strong>
					一、冒用他人身分證訂票屬於違反法律之行為,一經查獲將立即移送警政單位依法究辦。<br />					
					二、跨線列車訂票時,請注意跨日問題,訂票起站發車時間若已過午夜,乘車日期須選隔日,以免誤訂。<br />
					三、訂票作業處理時間可能較長,請等結果出來後再繼續動作,以免重複訂票。
				</strong>
			</p>
		</td>
	</tr>
	<tr>
		<td> </td>
		<td>
			<input name="returnTicket" type="hidden" value="0" />
			<button type="submit" style="border:0;background:white;width:100px;">
				<img src="./Images/oder_a.jpg" alt="開始訂票" onmouseover="this.src='./Images/oder_b.jpg'" onmouseout="this.src='./Images/oder_a.jpg'" onfocus="this.src='./Images/oder_b.jpg'" onblur="this.src='./Images/oder_a.jpg'" />
			</button>
		</td>
	</tr>
</tbody></table>
</form>
<script language="javascript" src="ctno1.js"></script>
<noscript>您的瀏覽器不支援&lt;span lang="en"&gt;JavaScript&lt;/span&gt;,但仍可以進行車票預訂作業。</noscript>


</body></html>

In [6]:
driver.find_element_by_id("person_id").send_keys('S123456789')
driver.find_element_by_id("from_station").send_keys('158')
driver.find_element_by_id("to_station").send_keys('185')
driver.find_element_by_id("getin_date").send_keys('2017/09/02')
driver.find_element_by_id("train_no").send_keys('121')
driver.find_element_by_id("order_qty_str").send_keys('1')

In [7]:
driver.find_element_by_xpath("/html/body/form/table/tbody/tr[9]/td[2]/button").click()

In [8]:
driver.get_screenshot_as_file('kaptcha.png')


Out[8]:
True

In [9]:
import PIL
img = Image.open('kaptcha.png').crop((190,90,390,150))
img.save('kaptcha.png','PNG')

In [10]:
img


Out[10]:

In [11]:
driver.find_element_by_id("randInput").send_keys('57048')

In [12]:
driver.find_element_by_xpath("//*[@id='sbutton']").click()

In [1]:
driver.close()


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-30b79b35b84d> in <module>()
----> 1 driver.close()

NameError: name 'driver' is not defined

In [ ]: