标签: playwright

如何从python剧作家定位器对象获取外部html?

我找不到任何从 python playwright 返回外部 html 的方法 page.locator(selector, **kwargs)。我错过了什么吗? locator.inner_html(**kwargs)确实存在。但是,我尝试使用 pandas.read_html ,但它在表定位器内部 html 上失​​败,因为它触发了表标记。

我目前正在做的是使用 bs4 来解析 page.content()。就像是:

soup = BeautifulSoup(page.content(), 'lxml')
df = pd.read_html(str(soup.select('table.selector')))
Run Code Online (Sandbox Code Playgroud)

python playwright playwright-python

3
推荐指数
1
解决办法
2736
查看次数

Playwright:如何选择具有文本的其他元素内的元素

因此,我在选择另一个包含文本的元素中的元素时遇到了问题。

我有一个列表项,在列表项中我有一个带有文本和按钮的链接。所以我尝试这样做:

const listItem = this.page.locator('data-test-id=list-item:has-text('someText')') 
const button = listItem.locator("data-test-id=button")
await button.click()
Run Code Online (Sandbox Code Playgroud)

但它并没有真正起作用,并且没有找到该元素。我在这里缺少什么?

playwright

3
推荐指数
1
解决办法
9106
查看次数

剧作家JAVA:如何获取输入字段的VALUE

剧作家专家您好,

我有这个输入字段

<input id="myName" placeholder="e.g. Max" maxlength="15" class="xyz"/>
Run Code Online (Sandbox Code Playgroud)

我试过这个JAVA代码:

page.locator("[placeholder=\"e.g. Max\"]").textContent();
Run Code Online (Sandbox Code Playgroud)

它不起作用:-(但我可以填写

page.locator("[placeholder=\"e.g. Max\"]").fill("Loren"); // this works
Run Code Online (Sandbox Code Playgroud)

你能帮忙并有一个想法吗?

先感谢您。

干杯 洛伦

java webautomation playwright playwright-java

3
推荐指数
1
解决办法
2543
查看次数

playwright-test:测试是否需要输入

我有一个必需的登录表单输入:

<input
  autoComplete="email"
  defaultValue={email}
  disabled={state === 'submitting'}
  id="email"
  name="email"
  placeholder={t('user-authentication:email-placeholder')}
  required // HERE!
  type="email"
/>
Run Code Online (Sandbox Code Playgroud)

如何测试 Playwright 是否需要输入?我在 Chromium 中的本机浏览器警告是:“请填写此字段。”

Chrome 输入警告显示“请填写此字段”

有没有办法在剧作家中检查/断言此警告?或者另一种方法来测试是否需要输入?

我尝试在输入中不写入任何内容,.fill('')然后按 Enter 键page.keyboard.press('Enter'),但这些并没有导致出现警告。

html-input required playwright playwright-test

3
推荐指数
1
解决办法
3717
查看次数

Playwright - 根据 CSS 属性选择元素

我需要通过基于 CSS 属性的过滤来使用 Playwright 选择适当的元素。在我的特定情况下,我需要过滤掉具有该属性的元素text-decoration:line-through并关注其余的元素。

这是包含元素的 DOM:

<span>
    <span style="line-height:1.15 !important;display:initial;text-decoration:line-through;display:block;">0.42</span>
    <span style="line-height:1.15 !important;display:initial;font-weight:bold;">0.29</span>
</span>
Run Code Online (Sandbox Code Playgroud)

(糟糕的 HTML 代码,我知道……对此我无能为力……)

在这种情况下,我需要选择 2nd span,它缺少删除线样式,但span无法预期元素的顺序和数量。

有没有办法通过单个ilocator.Locator(selector);查询来做到这一点?我需要使用单个查询来完成此操作,因为我创建的代码需要是通用的,而不是假设事物并进行“手动”过滤。一切都需要在选择器中。

css playwright playwright-dotnet

3
推荐指数
1
解决办法
2433
查看次数

如何在没有任何条件的情况下在剧作家中给予固定等待就像我们在赛普拉斯中那样:Cy.wait(600)

如何在剧作家中无任何条件地给予固定(隐式等待)等待

就像我们在 cypress 中所做的那样:

等待(600);

谢谢

就像我们在 cypress 中所做的那样:

等待(600);

automation cypress playwright playwright-test

3
推荐指数
2
解决办法
2万
查看次数

如何更新/升级Playwright?

Playwright项目中更新/升级的正确方法是什么Node.js
我试图在官方文档中找到这一点,但没有找到任何具体内容。

即我有这个简单的项目:

{
  "name": "cool-tests",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {},
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@playwright/test": "^1.28.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

Playwright使用最新版本以及兼容的浏览器维护该项目的最佳方法是什么?

node.js playwright

3
推荐指数
2
解决办法
1万
查看次数

如何在 Alpine Docker 容器上运行 Playwright 浏览器测试?

Playwright 附带的 Java 驱动程序不适用于 Alpine,因为它们不使用静态链接的 MUSL 构建。

java automated-tests docker alpine-linux playwright

3
推荐指数
1
解决办法
2220
查看次数

为父级存储 Playwright 元素的正确方法

我试图找出存储元素定位器的最佳方法,以最终使用该定位器来查找父级。

例如,在这个特定问题中,我有一个表行 ( <tr>),其上有一个唯一的文本Foo(作为<label>)。该表行还有一个复选框。看起来基本上是这样的:

表行

(假设有一个轮廓,但这本质上是表格行布局。表格有很多行(数量不确定),所以我不能只说nth行。所以明显的独特元素是通过其文本获取元素并存储“孩子”定位器。我是这样做的:

const tableRow = page.locator('label:has-text("Foo")')

但是现在我需要抓住它的父级,即 >,<tr这样我就可以抓住要单击的复选框。

对此最好的办法是什么?Playwright 并不完全有一个“父”选择器,我能找到的最接近的是https://playwright.dev/docs/api/class-page#page-locator-option-has has选项。

所以根据我的理解,我需要做类似的事情:

  const tableRow = await page.locator('tr', { has: page.locator('label:has-text("Foo")') })
  await tableRow.locator('input[type="checkbox"]').check()
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?

作为旁注:存储定位器时,它表示await不需要关键字(上面的第一行代码)。await存储定位器时我们不需要吗?

jsfiddle: https: //jsfiddle.net/mLb50jwp/(显然是最简单的版本)

playwright

3
推荐指数
1
解决办法
2128
查看次数

什么时候需要 Playwright 的“waitForSelector”?

老实说我很好奇为什么会存在这种方法?Playwright 通常会自动等待事物可见或加载。那么我们为什么需要打电话呢page.waitForSelector("locator")

我知道我们是否正在等待特定状态,但我看到很多使用此方法的示例代码随机抛出......但我不太明白为什么在正常情况下有必要?

playwright

3
推荐指数
1
解决办法
3182
查看次数