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()
在这里把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()
不在的话抛出异常,
正常的截图如下: