很多時候,網頁上的佈局都是表格形式的,如出下面這樣的
這種網頁型別在自動化中比較頭痛,需要很多判斷,下面就舉個例子,這裡以深圳出入境網頁為例,http://yysl.sz3e.com/wsyysq/select_sldw_zbs.jsp
比如我們需要點選某個星期六的任意一個可以預約的時段,該怎麼寫呢。
首先我們要分析,這也是寫程式的第一步,將手工操作進行邏輯提取,再形成程式
1、先判斷列表中的日期,找到星期六的列
2、再從找到的列中判斷可預約的時間點
基本思路就是這樣,來看第一點,怎麼提取表格式的日期時間呢?
使用firepath看看
所以可以用current找到所有的id,xpath://label[@class='current']
接下來怎麼把一列資料找出來呢?
從html中可以看到這是一個標準的w3c 表格形式
可以使用以下方式將一列資料定位出來
//tbody[@id='timeline']/tr/td[1] 其中1表示第1列,可根據需要拿出對應的列
因次,基本的程式碼如下:
all_data=browser.find_elements(By.XPATH, "//label[@class='current']") #把所有日期元素對像選取出來 rowall=[rowall.text for rowall in all_data] #把對應的日期元素取出 rowindex=[rowall.index(i) for i in rowall if u'星期六' in i] #獲取列 '''
判斷週六是否可預約,沒有隔2s重新整理
'''
while True:
tds=browser.find_elements(By.XPATH,"//tbody[@id='timeline']/tr/td[%d]" % (rowindex[0]+1))
if [td for td in tds if "可預約" in td.text]:break
else:
browser.find_element_by_xpath("//span[@receivepointsid='440307000000']").click()
time.sleep(2) .....