标签: playwright

剧作家获得cookie

我需要从一个页面获取 JSSESSIONID cookie 并将其传递到另一个页面。但是当我尝试与剧作家一起获取 cookie 时,我得到了一个空数组。有任何想法吗?

const browser = await playwright[browserType].launch();
const context = await browser.newContext();
        
const page = await context.newPage();
await page.goto(link);
       
const elementHandle = await page.$('#putfocushere');
await elementHandle.type(searchNumber);
console.log(await context.cookies(page.url()))
Run Code Online (Sandbox Code Playgroud)

node.js playwright

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

剧作家潜行

我已经使用木偶师有一段时间了,但决定转型为剧作家。在 puppeteer 中,有一个插件puppeteer-extra-stealth可以隐藏无头浏览器,并且网站无法检测无头模式。剧作家有类似的事情吗?

node.js puppeteer playwright

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

如何使用 Playwright 下载 PDF 文件?(Python)

我正在尝试使用 Playwright 自动下载 PDF 文件,我的代码与 Selenium 一起使用,但 Playwright 中的一些功能引起了我的注意。真正的问题是文档 没有帮助。当我点击下载时,我得到:
在此输入图像描述

而且我无法更改下载的目录,当浏览器/上下文关闭时它也会删除“文件”。使用 Playwright 我可以实现很好的下载自动化吗?

代码:

def run(playwright):
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context(accept_downloads=True)

    # Open new page
    page = context.new_page()

    # Go to http://xcal1.vodafone.co.uk/
    page.goto("http://xcal1.vodafone.co.uk/")

    # Click text=Extra Small File 5 MB A high quality 5 minute MP3 music file 30secs @ 2 Mbps 10s >> img
    with page.expect_download() as download_info:
        page.click("text=Extra Small File 5 MB A high quality 5 minute MP3 music file 30secs @ 2 Mbps 10s >> …
Run Code Online (Sandbox Code Playgroud)

python playwright playwright-python

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

您可以在一个浏览器上下文 Playwright Javascript 中运行多个测试吗?

是否可以在一个浏览器窗口中为剧作家/测试运行多个测试?

目前它将点击 browser.close(); 每次测试后,即使他们在同一页面上进行测试,这也会在测试上花费大量额外时间。

test.beforeAll(async ({ browser }) => {
  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('https://example.com');
});

test('nav test', async ({ page }) => {    
  const name = await page.innerText('.navbar__title');  
  expect(name).toBe('Playwright');
});

test('header test', async ({ page }) => {   
  const name = await page.innerText('.navbar__header');  
  expect(name).toBe('Playwright');
});
Run Code Online (Sandbox Code Playgroud)

automated-tests node.js playwright

10
推荐指数
2
解决办法
9226
查看次数

Playwright - 针对不同环境和不同变量进行测试

我希望使用 Playwright 来测试网页。

我正在使用的系统有 4 个不同的环境,我们需要对其进行部署,例如测试 url 可能是

www.test1.com www.test2.com www.test3.com www.test4.com

第一个问题是如何针对不同的环境?在我的剧作家配置中,我有一个 baseUrl 但我需要覆盖它。

此外,每个环境都有不同的登录凭据,我如何创建和覆盖这些作为每个环境的参数?

playwright playwright-test

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

如何设置 Playwright 不自动跟随重定向?

我想使用 Playwright 打开一个网站,但不希望被自动重定向。

在其他一些 Web 客户端中,它们具有参数链接follow=False以在重定向后自动禁用。但我在剧作家上找不到。

async def run(playwright):
    chromium = playwright.chromium
    browser = await chromium.launch()
    context = await browser.new_context()
    page = await context.new_page()

    def handle_response(response):
        print(f'status: {response.status} {response.url}')
    page.on('response', handle_response)

    await page.goto("https://google.com")
    await browser.close()

Run Code Online (Sandbox Code Playgroud)

这是示例代码,我们知道 google.com 会响应 301 并将重定向到www.google.com。是否可以在收到 301 后停止该过程,这样我就不需要继续处理www.google.com以及此后的所有响应?

请求文档中,我得到了Page.on('response')当/如果收到请求的响应状态和标头时发出的信息。

但是当Page on('response')回调后如何停止Request呢?我看到其他一些类似的问题,使用 Route.abort() 或 Route.fulfill(),但我仍然没有得到我的案例的答案。

感谢您的帮助。

python playwright playwright-python

10
推荐指数
1
解决办法
5858
查看次数

剧作家选择带有 text= 或 hastext 完全匹配的元素

我正在使用剧作家nodejs。我自己编写了一个动态选择器函数来选择数据表上的页码按钮。

pageNumberButton(page, table_id, page_number) {
   page.locator(`[aria-controls=${table_id}]`, {hasText: page_number});
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

pageNumberButton(page, table_id, page_number) {
   page.locator(`[aria-controls=${table_id}] text=${page_number}`);
}
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法使其完全匹配。

假设我的数据表有 13 页:

显示上一个、1、2、3、4、5、...、13、下一个按钮的 dataTable 按钮控件

我希望单击第 1 页。因此我发出以下命令:await pageNumberButton(page, "resultsTable", "1").click();

但我收到严格模式错误,因为有两个结果:1 和 13。

动态创建这个小选择器以便我可以对按钮进行精确匹配的最佳或好的方法是什么?

playwright

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

如何使用 Playwright 保存请求的响应正文?

我需要拦截网络请求并将其响应主体保存到变量中,这样我就可以使用 UI 上显示的值执行断言,但是当我尝试访问应该包含已保存响应主体的变量时,我会收到 [object Object]一个有效的机构。

JSON.stringify 也不能解决问题,因为我的变量变成了{"_type":"Page","_guid":"page@"}而不是实际的响应。

这是代码:

        const resp = await page.on('response', async response => {
            if (response.url().includes('/some_url/') && response.status() === 200) {
                console.log('BODY() ' + (await response.body())); //logs valid JSON response body
                return await response.body();
            }
        })
        console.log('RESPONSE' + resp); //logs RESPONSE[object Object]
Run Code Online (Sandbox Code Playgroud)

javascript automated-tests webautomation e2e-testing playwright

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

TypeScript + Playwright 错误:找不到模块

我在与剧作家一起编码测试自动化时遇到了问题。运行测试时,test.spec.ts 出现以下错误:

错误:找不到模块“@common/common” 代码:“MODULE_NOT_FOUND”

如何解决这个问题呢?

下面有代码

测试规格

import { chromium, ChromiumBrowser, Page } from "playwright";
import { test, expect, PlaywrightTestConfig } from "@playwright/test";
import Common from "@common/common";

test.beforeAll(async ({ page }) => {

});

test.describe('Go test', () => {
  test('Test1', async ({ page }) => {
    console.log("1111111111");
  });
})
Run Code Online (Sandbox Code Playgroud)

包.json

{
  "name": "type-sanity",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "ts-node -r tsconfig-paths/register src/main.ts",
    "test": "npx playwright test"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/randomstring": "^1.1.7",
    "playwright": …
Run Code Online (Sandbox Code Playgroud)

typescript playwright playwright-test

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

无法使用 Docker 和 xvfb 在 AWS Lambda 上运行 Playwright

几天来我一直在尝试使用 xvfb 在 AWS Lambda 上运行 Playwright。我能够构建一些在本地运行的 Docker 镜像变体,但推送到 AWS 时总是遇到错误。

Dockerfile:

FROM mcr.microsoft.com/playwright/python:v1.24.0-focal 
COPY index.py /
COPY start.sh /
RUN apt install xvfb
RUN chmod 755 /start.sh
CMD ["/bin/bash", "./start.sh"]
Run Code Online (Sandbox Code Playgroud)

启动文件

FROM mcr.microsoft.com/playwright/python:v1.24.0-focal 
COPY index.py /
COPY start.sh /
RUN apt install xvfb
RUN chmod 755 /start.sh
CMD ["/bin/bash", "./start.sh"]
Run Code Online (Sandbox Code Playgroud)

索引.py

#!/bin/bash
xvfb-run --auto-servernum --server-num 1 --server-args "-screen 0, 1920x1080x24" python index.py
Run Code Online (Sandbox Code Playgroud)

看起来由于某些与权限相关的原因,浏览器无法启动 - 有什么想法可能导致它以及如何解决它吗?

2022-08-30T09:50:28.053+02:00   Traceback (most recent call last):
2022-08-30T09:50:28.053+02:00   File "index.py", line 8, in lambda_handler
2022-08-30T09:50:28.053+02:00 …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services xvfb docker aws-lambda playwright

9
推荐指数
1
解决办法
2019
查看次数