软件测试|web自动化测试神器playwright教程(三十)

举报
霍格沃兹测试开发 发表于 2023/08/03 18:18:52 2023/08/03
【摘要】 前言我们在进行自动化工作中,还会遇到表格的问题,比如下面的情况:如果我们想要获取表格内的数据,就需要我们先定位表格内的元素。 table 表格场景我们可以从表格结构中发现,table页面有这几个明显的标签:table、tr、th、tdtable 标示一个表格tr 标示这个表格的一行th 定义表头单元格td 定义单元格标签,一组td标签将将建立一个单元格,td标签必须放在tr标签内 xpa...

image.png

前言

我们在进行自动化工作中,还会遇到表格的问题,比如下面的情况:

image.png

如果我们想要获取表格内的数据,就需要我们先定位表格内的元素。

table 表格场景

image.png

我们可以从表格结构中发现,table页面有这几个明显的标签:table、tr、th、td

  • table 标示一个表格
  • tr 标示这个表格的一行
  • th 定义表头单元格
  • td 定义单元格标签,一组td标签将将建立一个单元格,td标签必须放在tr标签内

xpath 定位table 表格

我们通常使用xpath定位来定位表格数据,语法如下:

//*[@id="表格id"]/tbody/tr[m]/td[n]

参数说明:m表示第几行,n表示第几列

获取当前表格行数

可以通过定位有多少个tr 元素,计算tr 的个数,就是总行数

语法示例:

//*[@id="table"]/tbody/tr

playwright 获取table表格总行数示例

number = page.locator('//*[@id="table"]/tbody/tr')
print(number.count())   # 统计个数

获取表格数据

  1. 获取表格第1行的数据
n = page.locator('//*[@id="table"]/tbody/tr[1]')
print(n.inner_text())   # 获取第一行数据
  1. 获取第3列的数据
 a = page.locator('//*[@id="table"]/tbody/tr/td[3]')
    for td in a.all():
        print(td.inner_text())
  1. 获取第1行第3列数据
b = page.locator('//*[@id="table"]/tbody/tr[1]/td[3]')
print(b.inner_text())  

示例

我们还是以上方的表格为例,展示一下playwright对于表格的定位,代码如下:

from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://sahitest.com/demo/tableTest.htm")
    # 计算总行数
    n = page.locator('//*[@id="t4"]/tbody/tr')
    print(n.count())
    # 打印表格第一行信息
    n1 = page.locator('//*[@id="t4"]/tbody/tr[1]')
    for a in n1.all():
        print(a.inner_text())
	# 打印第一行第三列的数据
    n2 = page.locator('//*[@id="t4"]/tbody/tr[1]/td[3]')
    print(n2.count())
    page.get_by_role("cell", name="EMPLOYEE_ID").click()
    page.get_by_role("cell", name="steven.king@gmail.com").click()

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

--------------------------------------------------
输出结果如下:
8
EMPLOYEE_ID	FIRST_NAME	LAST_NAME	EMAIL	PHONE_NUMBER	HIRE_DATE	JOB_ID
LAST_NAME

总结

本文主要介绍了playwright对表格的处理,后续我们将介绍playwright的其他用法。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。