練習一:
from selenium import webdriver
import unittest
# CSS選擇器
# 創建 WebDriver 對象,指明使用chrome瀏覽器驅動
wd = webdriver.Chrome()
# 設置最大等待時長10s 隱式等待,缺省等待
wd.implicitly_wait(10)
# 調用WebDriver 對象的get方法 可以讓瀏覽器打開指定網址
wd.get('http://127.0.0.1/mgr/sign.html')
# 輸入正確的用戶名和密碼賬號為 byhy 密碼為 88888888,點擊登錄
user_element = wd.find_element_by_id('username')
pwd_element = wd.find_element_by_id('password')
user_element.send_keys('byhy')
pwd_element.send_keys('88888888')
submit_element = wd.find_element_by_tag_name('button')
submit_element.click()
# 檢查左側菜單
menu_element = wd.find_element_by_class_name('sidebar-menu')
menus = menu_element.find_elements_by_tag_name('span')
# 定義一個列表,存放獲取的內容
menu_list = []
for menu in menus:
menu_list.append(menu.text)
assertIn(['客戶', '葯品', '訂單'], menu_list, '檢查左側菜單失敗')
wd.quit()
發現是沒有導入unittest
在導入過程中遇到如下錯誤
大概意思明白了,意思是python解釋器和pip版本不匹配,百度了一番還是無果,又重新來看這段報錯,突然發現
warning的那句話,
在這里把pip更新至最新版本,也是沒有用,一直搞了很久也沒有頭緒。
事實證明一開始路走錯了,怎么努力也是沒有用的,經過從頭開始分析學習,
根據字面意思一直以為是unittest安裝問題,后才知道assertIn是unittest中testcase的方法,不能直接調用,如果需要調用,需要實例化,然后才能用, unittest也不需要安裝python中自帶了,哎,上面的報錯是正常的。而且assertIn不支持列表檢查,只支持字符串,經過優化,代碼如下:
from selenium import webdriver
# 創建 WebDriver 對象,指明使用chrome瀏覽器驅動
wd = webdriver.Chrome()
# 設置最大等待時長10s 隱式等待,缺省等待
wd.implicitly_wait(10)
# 調用WebDriver 對象的get方法 可以讓瀏覽器打開指定網址
wd.get('http://127.0.0.1/mgr/sign.html')
# 輸入正確的用戶名和密碼賬號為 byhy 密碼為 88888888,點擊登錄
user_element = wd.find_element_by_id('username')
pwd_element = wd.find_element_by_id('password')
user_element.send_keys('byhy')
pwd_element.send_keys('88888888')
submit_element = wd.find_element_by_tag_name('button')
submit_element.click()
# 檢查左側菜單
menu_element = wd.find_element_by_class_name('sidebar-menu')
menus = menu_element.find_elements_by_tag_name('span')
# 定義一個列表,存放獲取的內容
menu_list = []
for menu in menus:
menu_list.append(menu.text)
check_list = ['客戶', '葯品', '11']
# 檢查'客戶', '葯品', '訂單 是否在menu_list中
for ck_list in check_list:
if ck_list in menu_list:
print(ck_list + " 在menu_list中")
else:
print(ck_list + " 不在menu_list中")
raise AssertionError
wd.quit()
不在的話拋出異常,
正常的截圖如下: