created: '2024-04-27 ’
定位策略 | 语法 |
---|---|
ID | page.locator("#id") |
类名 | page.locator(".className") |
标签 | page.locator("tagName") |
属性选择器 | page.locator("div[attribute='value']") |
组合选择器 | page.locator("div > span") |
多类名 | page.locator(".class1.class2") |
通配符选择器 | page.locator("*") |
选择器列表 | page.locator("div, span") |
属性包含 | page.locator("[attribute*='value']") |
属性开始于 | page.locator("[attribute^='value']") |
属性结束于 | page.locator("[attribute$='value']") |
属性包含单词 | page.locator("[attribute~='value']") |
属性精确匹配 | page.locator("[attribute]") |
nth 元素 | page.locator("div:nth-of-type(2)") |
子元素 | page.locator("div >> span") |
兄弟元素 | page.locator("div + span") |
后代元素 | page.locator("div span") |
选择器和文本 | page.locator("span:has-text('text')") |
选择器或文本 | page.locator("span:text('text')") |
角色 | page.locator("role=button") |
布尔属性 | page.locator("input[checked]") |
包含文本 | page.locator("span:has-text('text')") |
精确匹配文本 | page.locator("span:text-is('text')") |
包含部分文本 | page.locator("span:has-text('partial text')") |
精确匹配部分文本 | page.locator("span:text-is('exact text')") |
定位方法名称 | 描述 | 示例 |
---|---|---|
getByRole | 根据元素的角色(role)属性来定位 | page.getByRole('button') |
getByLabel | 根据元素的 label 或相关联的 label 元素的文本来定位 | page.getByLabel('Username') |
getByPlaceholder | 根据元素的 placeholder 属性来定位 | page.getByPlaceholder('Enter password') |
getByTestId | 根据元素的 data-testid 或类似的自定义数据属性来定位 | page.getByTestId('product-id') |
getByAltText | 根据元素的 alt 文本来定位 | page.getByAltText('image description') |
getByTitle | 根据元素的 title 属性来定位 | page.getByTitle('Download') |
getByValue | 根据输入元素的值来定位 | page.getByValue('example') |
getByText | 根据元素的可见文本来定位 | page.getByText('Sign in') |
getByDisplayValue | 根据输入元素的显示值来定位 | page.getByDisplayValue('example') |
getBySelectText | 根据 <select> 元素中选中的文本来定位 | page.getBySelectText('Option 1') |
getByTooltipText | 根据元素的 tooltip 文本来定位 | page.getByTooltipText('Add to cart') |
getByURL | 根据元素的 href 属性中的 URL 片段来定位 | page.getByURL('/path/*') |
getByButtonText | 根据按钮元素的文本来定位 | page.getByButtonText('Submit') |
getByInputValue | 根据输入元素的值来定位 | page.getByInputValue('example') |
断言方法 | 描述 | 示例 |
---|---|---|
expect(page).to_have_title() | 确保页面具有给定的标题。 | expect(page).to_have_title(re.compile(r".*checkout")) 2 |
expect(page).not_to_have_title() | 确保页面不具有给定的标题。 | expect(page).not_to_have_title("Unexpected Title") |
expect(page).to_have_url() | 确保页面导航到给定的 URL。 | expect(page).to_have_url(re.compile(".*checkout")) 2 |
expect(page).not_to_have_url() | 确保页面没有导航到给定的 URL。 | expect(page).not_to_have_url("http://example.com") |
expect(locator).to_be_checked() | 验证复选框是否被选中。 | expect('#checkbox').to_be_checked() |
expect(locator).to_be_disabled() | 验证元素是否被禁用。 | expect('#submit').to_be_disabled() |
expect(locator).to_be_editable() | 验证元素是否可编辑。 | expect('#input').to_be_editable() |
expect(locator).to_be_empty() | 验证容器是否为空。 | expect('#table').to_be_empty() |
expect(locator).to_be_enabled() | 验证元素是否启用。 | expect('#button').to_be_enabled() |
expect(locator).to_be_focused() | 验证元素是否获得焦点。 | expect('#input').to_be_focused() |
expect(locator).to_be_hidden() | 验证元素是否隐藏。 | expect('#element').to_be_hidden() |
expect(locator).to_be_visible() | 验证元素是否可见。 | expect('#element').to_be_visible() |
expect(locator).to_contain_text() | 验证元素是否包含指定的文本。 | expect('#element').to_contain_text('Text') |
expect(locator).to_have_attribute(attributeName) | 验证元素是否具有指定的属性。 | expect('#element').to_have_attribute('class') |
expect(locator).to_have_class(className) | 验证元素是否具有指定的类名。 | expect('#element').to_have_class('class-name') |
expect(locator).to_have_count(count) | 验证元素个数是否与期望值相等。 | expect('.element').to_have_count(5) |
expect(locator).to_have_css(cssProperty) | 验证元素是否具有指定的CSS属性。 | expect('#element').to_have_css('color', 'blue') |
expect(locator).to_have_id(id) | 验证元素是否具有指定的ID。 | expect('#element').to_have_id('my-id') |
expect(locator).to_have_js_property(jsPropertyName) | 验证元素是否具有指定的JavaScript属性。 | expect('#element').to_have_js_property('checked') |
expect(locator).to_have_text(text) | 验证元素是否具有指定的文本内容。 | expect('#element').to_have_text('some text') |
expect(locator).to_have_value(value) | 验证表单元素是否具有指定的值。 | expect('#element').to_have_value('some-value') |
expect(locator).to_have_values(values) | 验证表单元素是否具有指定的值集合。 | expect(['#el1', '#el2']).to_have_values(['v1', 'v2']) |
expect(page).to_have_title(title) | 验证页面标题是否与期望值相等。 | expect(page).to_have_title('expected-title') |
expect(page).to_have_url(url) | 验证页面URL是否与期望值相等。 | expect(page).to_have_url('expected-url') |
expect(api_response).to_be_ok() | 验证API响应状态码是否为200(OK)。 | expect(api_response).to_be_ok() |
操作(Action) | 描述 | 示例 |
---|---|---|
page.mouse.click(x, y) | 在页面上的特定坐标点击。 | page.mouse.click(100, 100) |
page.mouse.dblclick(x, y) | 在页面上的特定坐标双击。 | page.mouse.dblclick(100, 100) |
page.mouse.down(options) | 在页面上的特定位置按下鼠标按钮(默认是主按钮)。 | page.mouse.down() |
page.mouse.up(options) | 在页面上的当前位置释放鼠标按钮。 | page.mouse.up() |
page.mouse.move(x, y, options) | 将鼠标指针移动到页面上的特定坐标。 | page.mouse.move(100, 100) |
page.mouse.drag(startX, startY, endX, endY, options) | 将鼠标拖动从一个坐标到另一个坐标。 | page.mouse.drag(100, 100, 200, 200) |
page.mouse.dragAndDrop(source, target, options) | 从一个元素拖动鼠标到另一个元素。 | page.mouse.dragAndDrop('.source', '.target') |
page.keyboard.down(key) | 按下键盘上的一个键。 | page.keyboard.down('Shift') |
page.keyboard.up(key) | 释放键盘上的一个键。 | page.keyboard.up('Shift') |
page.keyboard.type(text, options) | 在当前键盘焦点所在的元素中输入文本。 | page.keyboard.type('Hello World') |
page.keyboard.press(key, options) | 按顺序按下一系列键。(例如,可以组合 Shift+Arrow) | page.keyboard.press('Shift+ArrowDown') |
page.keyboard.insertText(text) | 将文本直接插入到当前的键盘焦点中,不涉及键盘事件。 | page.keyboard.insertText('Hello') |
page.touchscreen.tap(x, y) | 在触摸屏幕上的特定坐标进行一次点击。 | page.touchscreen.tap(100, 100) |
page.accessibility.snapshot(options) | 获取页面的可访问性树的快照。 | page.accessibility.snapshot() |
方法名称 | 描述 | 返回值类型 |
---|---|---|
page.waitForSelector | 等待页面出现指定的 CSS 选择器。 | ElementHandle |
page.waitForFunction | 等待页面上的某个条件函数返回 true 。 | null |
page.waitForTimeout | 设置一个等待超时。 | null |
page.waitForURL | 等待页面的 URL 变为指定的字符串。 | null |
page.waitForNavigation | 等待页面导航到新 URL。 | null |
page.waitForLoadState | 等待页面达到特定的加载状态。 | null |
page.waitForEvent | 等待页面上的某个事件被触发。 | Event |
elementHandle.waitForSelector | 等待元素内部出现指定的选择器。 | ElementHandle |
elementHandle.waitForElementState | 等待元素达到特定的状态。 | ElementHandle |
frameLocator.waitForSelector | 在指定的 iframe 中等待出现 CSS 选择器。 | ElementHandle |