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

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