我有一些带过滤器和排序的数据表。每当我使用某些条件过滤数据表时,表上的行都会发生变化。
假设我在数据表中有一个用户列表,我根据用户是管理员用户还是普通用户来过滤用户,因此如果我选择带有过滤器下拉列表的管理员用户,则只会显示管理员用户。
除了数据本身发生变化之外,这些过滤数据中的许多变化都不会以任何方式反映数据表。基于数据本身的测试不可靠,因为它变化太快。
测试过滤/排序工作正常的最佳方法是什么?
我的一个想法是使用所需数据向表列添加数据属性,并使用Web驱动程序检查它们是否满足条件。
<table>
<tr>
<th>User Id</th>
<th>Username</th>
<th>Email</th>
</tr>
<tr>
<td data-qa-user-type="admin">1</td> <!-- Note the data attribute -->
<td>Maria</td>
<td>maria@email.com</td>
</tr>
</table>
答案 0 :(得分:1)
如果您要检查过滤器是否正常工作,可以像使用此代码段一样使用WebElements:
element = driver.find_elements_by_xpath("//td[@data-qa-user-type='normal']")
if len(element) == 0 :
print("pass")
else :
print("fail")
如果找到特定类型的用户(普通用户),则断言失败。
如果页面未刷新,我们可以刷新页面或在分析dom中的更改后根据某个特定元素的外观或消失等待。现在,为了检查数据是否按排序顺序,我们可以执行以下操作:
# now checking for sorted elements or not
element = driver.find_elements_by_xpath("//td[@data-qa-user-type='admin']//following-sibling::td")
originalList = []
for i in range(0,len(element),2) :
originalList.append(element[i].text)
sortedList = sorted(originalList)
if originalList == sortedList :
print("pass again")
else :
print("Fail")
希望它有所帮助。