65新一代自动化测试神器playwright+python系列课程_table表格定位获取数据

Table表格定位获取数据

工作中我们测试的系统往往都有很多表格用来展示系统数据,尤其是报表功能。在做UI自动化测试时,我们有可能需要验证表格中的数据是否正确,可能需要我们把表格中的数据挨个验证一遍,这种情况下一个单元格一个单元格的定位获取数据时非常麻烦的,这个时候如果能一次性的把所有数据都获取下来再整体处理就方便多了,本文中我们就来看一下如何一次性获取所有数据。

从上图中table的示例中,我们很容易发现table页面有这几个明显的标签:table、tr、th、td

其中table标示一个表格,tr标示这个表格的一行,td定义单元格标签,一组td标签将将建立一个单元格,td标签必须放在tr内,另外还有一个th标签定义表头单元格,本案例中没有暂时忽略不计。

当我们清楚了这些标签的含义后,我们就可以用tr标签定位表格的一整行,再用td标签定位每一行的每一个单元格,就可以一次性获取整个表格的数据了。

我们可以先使用xpath=//table/tbody/tr 定位表格中所有的单元行

从上图的执行结果来看,定位到了51行,有数据的是前50行,我们只需要在这50行里遍历每一行的单元格即可。

从上图看,在tr中定位标签td得到了11个单元格对象,本例的表格中前10个有数据,最后一个单元格不需要处理。

经过上面两个步骤,已经清楚了如何定位到单元格,接下来就可以使用for循环遍历整个列表中的单元格获取数据了。

实践代码:

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

from playwright.sync_api import Playwright, sync_playwright, expect

playwright = sync_playwright().start()

browser = playwright.chromium.launch(headless=False, args=['--start-maximized'],slow_mo=1000) #默认无头模式,设置浏览器最大化

context = browser.new_context(no_viewport=True) # 创建上下文,相当浏览器于实例化,即打开浏览器

page = context.new_page() # 打开一个新标签页

page.goto("http://127.0.0.1:8080/oa/") # 打开网址

page.locator("input[name=\"loginId\"]").fill("sup")

page.locator("input[name=\"password\"]").fill("s1234567")

page.get_by_role("button", name="登录").click() #点击登录后会弹出提示信息框

page.locator('text="员工通讯录"').click()

cell_row = page.frame_locator('#iframe_main').locator('//table/tbody/tr').all()

for i in range(len(cell_row)-1):

    cells = cell_row[i].locator('td').all()

    for j in range(len(cells)-1):

        text = cells[j].inner_text()

        print(text,end='\t')

    print()

page.wait_for_timeout(10000)

context.close()

browser.close()

playwright.stop()

执行结果如下:

posted @ 2024-03-21 11:09  测试_老姜  阅读(91)  评论(0)    收藏  举报