16新一代自动化测试神器playwright+python系列课程_playwright元素相关操作_获取元素文本和属性

前面我们讲过,做自动化测试时,脚本执行完成需要进行断言,断言时经常选择页面中的一些信息进行断言,这些信息都是在某个元素上的,要获取这些信息就需要获取这些元素的文本,另外元素的属性也可以用来断言,而且在元素定位时还可以借助一个元素的属性值去定位另一个元素。作为一款强大的web自动化测试神器,playwright也可以实现对元素属性,文本值和输入框内容的抓取,并且实现非常简单,本文我们就为大家介绍一下使用playwright获取元素属性,元素文本值以及输入框内容的方法。

inner_text() 元素文本值

实践代码:

我们来获取上图中单位名称

'''

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']) #默认无头模式,设置浏览器最大化

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.wait_for_timeout(2000)

t = page.locator('//table/tbody/tr/td[2]/table/tbody/tr[2]/td').inner_text() # 获取元素上的文本

print(t)

context.close()

browser.close()

get_attribute() 获取元素属性

接下来我们来获取元素的属性,

以上图勾选复选框为例,假设测试中我们需要勾选一条数据执行删除或其他操作,但是直接去定位复选框会存在问题,以标题为123414的数据为例来说,它的复选框时第一个,但是在执行测试时如果临时产生了新数据这个复选框就不是第一个了,是无法确定是第几个的,由于这个元素的属性与其他复选框的属性是一样的,value属性值虽然是唯一的,但是每次登录值就会变话,这样就会导致我们无法直接定位这个复选框。这时我们会发现标题123414是唯一且不变的,而且我们会发现123414所在元素的onclick属性值中恰好包含复选框的value属性值,这样我们就可以定位123414所在元素,获取onclick属性值,再从onclick属性值中把复选框value属性值提取出来,这样就可以使用value属性定位复选框,这样最终通过标题来定位对应的复选框就不用担心复选框的顺序变化了。

实践代码

'''

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']) #默认无头模式,设置浏览器最大化

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.wait_for_timeout(2000)

page.locator('text=已发事项').click()

frame = page.frame_locator("iframe[name=\"iframe_main\"]").frame_locator("frame[name=\"listframe\"]")

v = frame.get_by_title('123414').get_attribute('onclick') # 获取onclick属性值

print(v)

page.wait_for_timeout(2000)

context.close()

browser.close()

input_value() 获取输入框的值

我们再来看一下获取输入框中的值

以登录时输入密码后,在获取密码输入框中的密码为例

实践代码

'''

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']) #默认无头模式,设置浏览器最大化

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")

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

password_input.fill("s1234567")

page.wait_for_timeout(2000)

t = password_input.input_value()

print(t)

page.wait_for_timeout(2000)

context.close()

browser.close()

posted @ 2024-03-21 10:58  测试_老姜  阅读(50)  评论(0)    收藏  举报