很多時候,網頁上的佈局都是表格形式的,如出下面這樣的

這種網頁型別在自動化中比較頭痛,需要很多判斷,下面就舉個例子,這裡以深圳出入境網頁為例,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) .....