Fiddler在selenium调试中的应用
2017-09-30 本文已影响0人
hslzyd
当初刚学selenium的时候,写一个验证搜索的test case搞了好久= =!小记录一下
def keyword_search_assert(self, driver, keyword):
#单个关键词搜索验证,通过遍历搜索结果每一行的第一列是否包含搜索关键词
results = driver.find_elements_by_css_selector('#w1 > table > tbody > tr')
for result in results:
tds = result.find_elements_by_tag_name('td')
col1 = tds[0].text
if len(tds) == 1:
#查询结果为空,则只有一列
self.assertEqual(col1, u"没有找到数据。")
else:
#若有匹配结果,不止一列,取第一列做对比
self.assertNotEqual(col1.find(keyword), -1)
def keywords_search_assert(self, driver, keyword1, keyword2):
#两个关键词搜索的验证
results = driver.find_elements_by_css_selector('#w1 > table > tbody > tr')
for result in results:
tds = result.find_elements_by_tag_name('td')
#搜索结果为空时(此时只有一列),缺省提示仍占用一行,所以count要加1
if (len(tds) == 1):
self.assertEqual(tds[0].text, u"没有找到数据。")
else:
col2 = tds[1].text
col3 = tds[2].text
self.assertNotEqual(col2.find(keyword1), -1)
self.assertNotEqual(col3.find(keyword2), -1)
开始时想到用匹配搜索结果总数与结果中包含关键词的行数对比,后面才发觉好蠢,还是直接用assertEqual比较直接。其实还是因为不确定一个test case中能否用多个assert断言,因为目前搜索返回的结果总是对的,不好确认。后来想到了Fiddler的autoResponse功能,将搜索返回值修改,就能验证Fail的情况了,也验证了单个test case是可以使用多个assert断言的,且所有断言都pass结果才是pass,否则只要有一个fail,最后的结果就是fail。
- 先打开Fiddler然后在浏览器中执行一次搜索,把Fiddler中记录的session拖动到AutoResponser框中
记得session要先decode,否则编辑response时候会乱码
- 右键编辑response,在TextView中修改搜索返回值使之不匹配,点击save保存
- 最后开启rules即可,执行test case就能验证fail的情况了