31新一代自动化测试神器playwright+python系列课程_playwright聚焦元素

Playwright元素聚焦

当打开一个页面时,有时候光标会默认位于某个元素上,这个时候我们定位一个其他的元素输入,可能会出现问题,就是输入的字符串并没有输入到目标元素中,而是输入到了光标所在的元素。这个时候可以通过click一下目标元素使得光标移动到目标元素上来解决这个问题,聚焦到某个元素就类似于click一下移动光标。像前面的模拟键盘复制粘贴章节中,就需要click一下输入框将光标移动到目标输入框,才能将复制的内容粘贴到目标输入框中,那么我们也可以先聚焦目标输入框后在粘贴。

Playwright中使用focus()方法实现元素聚焦。

有两种使用方式:

page.focus(selector)

locator.focus()

实践代码:

# '''

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

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

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

page.get_by_role("button", name="登录").press('Enter') #按回车键代替点击

page.wait_for_timeout(2000)

page.get_by_text('新建事项').click()

page.wait_for_timeout(2000)

frame = page.frame_locator('#iframe_main')

ele = frame.locator('#subject')

ele.fill('键盘案例')

# ele.press('Control+a')#全选

page.keyboard.press("Control+A")

page.wait_for_timeout(2000)

page.keyboard.press('Control+c')#复制

ele.click() # 通过点击取消文字的选中状态

page.wait_for_timeout(1000)

frame2 = frame.frame_locator('#baidu_editor_0')

frame2.locator('//body').focus() # 聚焦目标输入框,跟下一行的click()作用一样

# frame2.locator('//body').click() # 把光标点到大输入框

page.keyboard.press('Control+v') #粘贴

page.wait_for_timeout(1000)

page.keyboard.press('Shift+A') #按下大写A

page.wait_for_timeout(10000)

context.close()

browser.close()

playwright.stop()

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