如下圖所示:
當定位元素時,我想獲取指定的某一列的某一行的斷言,如圖我只想獲取jiancha1的值,有同學會說:直接定位不就好了。但是我們知道,列表的數據會時刻變動的,不能靠定死的路徑,那該怎么辦呢?
我們可以在定位元素上下文章,首先,通過F12定位元素XPATH路徑:
# 姓名:zc監察1 get_name_loc = (By.XPATH,"//div[@class='bs-example']/form/table/tbody/tr[1]/td[2]") # 姓名:jiancha1 get_name_loc = (By.XPATH,"//div[@class='bs-example']/form/table/tbody/tr[2]/td[2]")
對比一下,只有tr行不一樣,所以如果想獲取列表中某一列的所有數據,寫下面的代碼:
# 獲取所有姓名 get_name_loc = (By.XPATH,"//div[@class='bs-example']/form/table/tbody/tr/td[2]")
然后通過循環得到列表數據:
get_name_loc = (By.XPATH,"//div[@class='bs-example']/form/table/tbody/tr/td[2]") def getListName(self,realname): ''' 獲取列表真實姓名 :param realname: 真實姓名 :return: getRealname ''' # 查詢最新輸入的姓名 sleep(0.5) getRealname = functions.AllFuncions().getNewName(realname)[2]
============重點============= # 定位姓名元素 names = self.find_elements(*self.get_name_loc) lists = [] for i in names: lists.append(i.text) ============重點============= # 對比數據庫數據與列表數據 if getRealname in lists: return getRealname else: return None
這樣就大功告成啦!獲取數據庫中想要的字段值跟列表中的數據進行對比,如果存在則把這個值進行斷言。
感謝參考文章:《python3+selenium獲取列表某一列的值》