Web自动化测试之playwright:Web元素操作

定位到元素后就可以对其进行某些操作,比如输入文本,点击,获取属性等,本文来介绍playwright提供的元素操作方法。

目录

  • 文本输入
  • 模拟键盘输入
  • 点击
  • Checkbox、Radio操作
  • select选项
  • 上传文件
  • 截图
  • 获取、判断元素属性及状态

文本输入

文本输入使用 fill方法:

page.fill("id=kw", "test")

模拟键盘输入

1、一个字符一个字符的输入,模拟真实的键盘输入

  • page.type("id=kw", "playwright")
  • page.type("id=kw", "playwright", delay=100): 每个字符延迟100ms输入

2、模拟按键
支持各种键盘事件,比如Tab、Delete、Enter、PageDown、PageUp、F1 - F12、0-9、A-Z等

  • page.press("id=kw", '@') : 模拟键盘输入 @ 符号
  • page.press("id=kw", 'Control+A'):Control+A
  • page.press('id=kw', 'Enter'):点击回车

测试百度搜索:

def test_press(self):
    self.page.goto("https://www.baidu.com/")
    self.page.type("id=kw", "playwright", delay=100)
    self.page.press("id=kw", '@')
    self.page.press("id=kw", 'Control+A')
    self.page.press("id=kw", 'Delete')
    self.page.press("id=kw", "Control+Z")
    self.page.press('id=kw', 'Enter')
    sleep(5)

点击

包括以下几种鼠标操作方法:

  • 左键点击:page.click("id=su")
  • 点击元素左上角:page.click('id=su', position={'x': 0, 'y': 0})
  • Shift + click:page.click("id=su", modifiers=['Shift'])
  • 强制点击:page.click("id=su", force=True)
  • 右键点击:page.click("id=su", button='right')
  • 双击:page.dblclick("id=su")
  • 悬停在元素上:page.hover('id=su')

测试下面的页面,测试页面地址:https://sahitest.com/demo/clicks.htm

Web自动化测试之playwright:Web元素操作_第1张图片

from time import sleep

from playwright.sync_api import sync_playwright

class TestInput():
    def setup(self):
        playwright = sync_playwright().start()
        self.browser = playwright.chromium.launch(headless=False)
        self.context = self.browser.new_context()
        self.page = self.context.new_page()

    def teardown(self):
        self.browser.close()

    def test_click(self):
        self.page.goto("https://sahitest.com/demo/clicks.htm")
        self.page.click('"click me"')
        self.page.dblclick('"dbl click me"')
        self.page.click('"right click me"', button='right')
        self.page.click('"right click me"', modifiers=["Shift"])
        self.page.hover('"Clear"')
        self.page.hover('"Clear"')
        self.page.click('"Clear"', position={'x': 0, 'y': 0})
        sleep(5)

Checkbox、Radio操作

使用 checkuncheck 来勾选或者取消勾选 Checkbox 和 Radio 。

  • 勾选:page.check('#agree')
  • 取消勾选:page.uncheck('#agree')
  • 判断是否勾选:page.is_checked('#agree')

测试页面地址:https://sahitest.com/demo/clicks.htm

Web自动化测试之playwright:Web元素操作_第2张图片

def test_checkbox_radio(self):
    self.page.goto("https://sahitest.com/demo/clicks.htm")

    # checkbox
    self.page.click('[type="checkbox"][value="Click me"]') # 点击checkbox
    self.page.check('[type="checkbox"][value="Click me"]') # 勾选checkbox

    assert self.page.is_checked('[type="checkbox"][value="Click me"]') is True
    self.page.uncheck('[type="checkbox"][value="Click me"]') # 取消勾选checkbox

    # radio
    self.page.check(':nth-match([type="radio"], 1)') # 勾选radio
    sleep(2)
    self.page.click(':nth-match([type="radio"], 2)') # 点击radio
    sleep(5)

select选项

使用 select_option() 方法对