Selenium自动化测试(断言 / fame框架处理)
一、断言
1、验证应用程序的状态是否同所期望的一致
2、常见的断言包括:验证页面内容,如标题是否为xxx或当前位置是否正确,或是验证该复选框是否被勾选
unittest中常用的assert(断言)语句
-
assertEqual(a, b) # a == b
-
assertNotEqual(a, b) # a != b
-
assertTrue(x) # bool(x) is True
-
assertFalse(x) # bool(x) is False
-
assertIs(a, b) # a is b
-
assertIsNot(a, b) # a is not b
-
assertIsNone(x) # x is None
-
assertIsNotNone(x) # x is not None
-
assertIn(a, b) # a in b
-
assertNotIn(a, b) # a not in b
-
assertIsInstance(a, b) # isinstance(a, b)
-
assertNotIsInstance(a, b) # not isinstance(a, b)
-
assertGreater(a, b) # a > b
-
assertGreaterEqual(a, b) # a >= b
-
assertLess(a, b) # a < b
-
assertLessEqual(a, b) # a <= b
实例代码块:
-
aq = self.locator(self.ass).text # 用于断言登录成功的文本内容
-
try:
-
self.assertIn("欢迎您", aq)
-
self.test_log.info("普通信息 [test_01_login] 测试成功-预期结果 [%s]" % state) #在日志里显示
-
self.close()
-
# self.logger.info("test_01_login:测试成功-预期结果 [%s]" % state) # 日志文件(断言失败会写到日志里)
-
except AssertionError:
-
self.picture()
-
self.test_log.error("错误信息 [test_01_login] 测试失败")
-
# self.logger.info("test_01_login:测试失败")
-
raise AssertionError # 抛出异常
异常类型:
AssertionError:assert语句失败
AttributeError:试图访问一个对象没有的属性
IOError:输入输出异常,基本是无法打开文件
ImportError:无法引入模块或者包,基本是路径问题
IndentationError:语法错误,代码没有正确的对齐
IndexError:下标索引超出序列边界
KeyError:试图访问字典里不存在的键
KeyboadrInterrupt:Ctrl+c被按下
NameError:使用一个还未赋值对象的变量
SyntaxError:python代码逻辑语法错误,不能执行
TypeError:传入的对象类型与要求不符
UnboundLocalError:试图访问一个还未设置的全局变量,基本上是由于另有一个同名的全局变量,导致你以为在访问
ValueError:传入一个不被期望的值,即使类型正确
二、fame框架
有时候我们老定位不到元素,这里不妨看一下前端开发的项目是否有fame框架页,有的话大概率是这个问题,需要进入fame框架页才可以操作元素,适当的添加休眠的时间
-
# 进入框架
-
driver.switch_to.frame("menu-frame")
-
driver.find_element(By.CSS_SELECTOR, "a[href='goods.php?act=list']").click()
-
# 退出框架
-
driver.switch_to.default_content() # 退出框架
-
# 再进入框架(操作元素)
-
driver.switch_to.frame("menu-frame")
-
driver.find_element(By.LINK_TEXT, '添加新商品').click()
三、下拉框处理
如遇到选择商品类型、选择收货地址等
-
from selenium.webdriver.support.select import Select
-
sel = Select(driver.find_element_by_name('cat_id'))
-
sel.select_by_value('8') # 通过值选中
-
sel.select_by_index('4') # 通过下标选中
-
sel.select_by_visible_text('充电器') # 通过文本选中,必须与文本一样包括空格
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。