菜单
开源 RSS

ElementHandle

注意

此 API 正在开发中。以下某些功能可能表现异常。

方法描述
$(selector)根据给定的选择器查询元素。
$$$(selector)根据给定的选择器查询多个元素。
boundingBox()返回元素的边界框。
check([options])检查元素是否为 checkboxradio 按钮。
click([options])点击元素。
contentFrame()返回元素的 Frame
dblclick([options])双击元素。
dispatchEvent(type[, eventInit])向元素派发事件。
fill(value[, options])将指定值填入元素。
focus()聚焦元素。
getAttribute(name)返回元素的指定属性。
hover([options])悬停在元素上方。
innerHTML()返回元素的 inner HTML。
innerText()返回元素的 inner text。
inputValue([options])返回输入元素的值。
isChecked()检查 checkbox 输入类型是否被选中。
isDisabled()检查元素是否被 disabled
isEditable()检查元素是否可编辑。
isEnabled()检查元素是否被启用。
isHidden()检查元素是否隐藏。
isVisible()检查元素是否可见。
ownerFrame()返回元素的 Frame
press(key[, options])聚焦元素并使用虚拟 键盘 按下单个键或组合键。
screenshot([options])截取元素的屏幕截图。
scrollIntoViewIfNeeded([options])如果需要,将元素滚动到视野中。
selectOption(values[, options])选中与值匹配的 select 元素的一个或多个选项。
selectText([options])选中元素的文本。
setChecked(checked[, options])checkboxradio 输入元素的值设置为指定的选中或未选中状态。
setInputFiles(file[, options])将文件输入元素的值设置为指定的文件。
tap(options)轻触元素。
textContent()返回元素的文本内容。
type(text[, options])聚焦元素并使用虚拟 键盘 将指定的文本输入到元素中。
uncheck([options])如果元素是 checkboxradio 按钮,则取消选中它。
waitForElementState(state[, options])等待元素达到指定状态。
waitForSelector(selector[, options])等待元素出现在 DOM 中并可见。

示例

JavaScript
import { browser } from 'k6/browser';
import { check } from "https://jslib.k6.io/k6-utils/1.5.0/index.js";

export const options = {
  scenarios: {
    browser: {
      executor: 'shared-iterations',
      options: {
        browser: {
          type: 'chromium',
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  // Goto front page, find login link and click it
  try {
    await page.goto('https://test.k6.io/');
    const messagesLink = await page.$('a[href="/my_messages.php"]');

    await Promise.all([page.waitForNavigation(), messagesLink.click()]);
    // Enter login credentials and login
    const login = await page.$('input[name="login"]');
    await login.type('admin');
    const password = await page.$('input[name="password"]');
    await password.type('123');

    const submitButton = await page.$('input[type="submit"]');

    await Promise.all([page.waitForNavigation(), submitButton.click()]);

    await check(page, {
      'header': async p => {
        const h2 = await p.$('h2');
        return await h2.textContent() == 'Welcome, admin!';
      },
    });
  } finally {
    await page.close();
  }
}
JavaScript
import { browser } from 'k6/browser';
import { check } from 'https://jslib.k6.io/k6-utils/1.5.0/index.js';

export const options = {
  scenarios: {
    browser: {
      executor: 'shared-iterations',
      options: {
        browser: {
          type: 'chromium',
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  try {
    // Inject page content
    await page.setContent(`
          <div class="visible">Hello world</div>
          <div style="display:none" class="hidden"></div>
          <div class="editable" editable>Edit me</div>
          <input type="checkbox" enabled class="enabled">
          <input type="checkbox" disabled class="disabled">
          <input type="checkbox" checked class="checked">
          <input type="checkbox" class="unchecked">
    `);

    // Check state
    await check(page, {
      'is visible': async p => {
        const e = await p.$('.visible');
        return e.isVisible();
      },
      'is hidden': async p => {
        const e = await p.$('.hidden');
        return e.isHidden();
      },
      'is editable': async p => {
        const e = await p.$('.editable');
        return e.isEditable();
      },
      'is enabled': async p => {
        const e = await p.$('.enabled');
        return e.isEnabled();
      },
      'is disabled': async p => {
        const e = await p.$('.disabled');
        return e.isDisabled();
      },
      'is checked': async p => {
        const e = await p.$('.checked');
        return e.isChecked();
      },
      'is unchecked': async p => {
        const e = await p.$('.unchecked');
        return await e.isChecked() === false;
      },
    });
  } finally {
    await page.close();
  }
}