标签: playwright

在剧作家中的第一个浏览器实例之后维护登录会话

我正在与剧作家一起运行多个 chromium 实例。

在每个实例上,我都使用相同的凭据登录。

当我已经使用相同的凭据登录到第一个浏览器实例时,有没有办法自动登录到其他浏览器实例?

javascript testing node.js puppeteer playwright

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

如何使用 Playwright 最大化弹出窗口(例如单击按钮打开弹出窗口)

我正在测试的软件有很多弹出窗口/模式窗口。主页loginPage以全屏模式打开。单击按钮后,将打开一个新的弹出(模式)窗口,例如。overviewPage

我想要实现的是更改此弹出窗口的视口,或者更好地最大化它,在本例中是overviewPage

这是我的代码:

const browser = await chromium.launch({
        args: ['--start-maximized'],
        headless : false, slowMo : 50});
const context = await browser.newContext({viewport : null});
const loginPage = await context.newPage();
await loginPage.goto(myURL.href);  //Login Page was opened in Maximized mode (Fullscreen)

// Next step is to click a button on Login Page, and a new page is opened.
await loginPage.click('#nextBtn');

console.log('Get page after a specific action (e.g. clicking a button');
const [overviewPage] = await Promise.all([
    context.waitForEvent('page')
]);
await overviewPage.waitForLoadState(); …
Run Code Online (Sandbox Code Playgroud)

automation popupwindow node.js typescript playwright

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

在 Playwright for Python 中,如何获取与 ElementHandle 相关的元素(孩子、父母、祖父母、兄弟姐妹)?

在 playwright-python 中我知道我可以得到一个elementHandleusing querySelector().

示例(同步):

from playwright import sync_playwright

with sync_playwright() as p:
    for browser_type in [p.chromium, p.firefox, p.webkit]:
        browser = browser_type.launch()
        page = browser.newPage()  
        page.goto('https://duckduckgo.com/')
        element = page.querySelector('input[id=\"search_form_input_homepage\"]')
    
Run Code Online (Sandbox Code Playgroud)

如何根据 this 获取相对于此的元素elementHandle?即父母、祖父母、兄弟姐妹、孩子的句柄?

python dom handle playwright playwright-python

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

如何使用 playwright 捕获 <table> 内容

什么是正确的查询选择器来获取所有标签并迭代以捕获表数据?下面的查询选择器无法在 DOM 中找到元素。先感谢您

const allusers = await page.$$eval('tbody .MuiTableRow-root', (users) => {
    return users.map(user => {
        const email = user.querySelector('tr:nth-child(1)');
        const edition = user.querySelector('tr:nth-child(2)');
        return {
            email: email.innerText.trim(),
            edition: edition.innerText.trim()
        };
    });
});

console.log('${allusers.length} users found');
console.dir(allusers);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

javascript webautomation playwright

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

python playwright 中的打印页面源代码

我有 PHP 脚本,我使用带有 URL 参数的代码调用 python 函数:

import json
import sys
import urllib.parse
link = urllib.parse.unquote(sys.argv[1])
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    browser = p.chromium.launch()
    context = browser.new_context(user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36')
    page = context.new_page()
    cookie_file = open('./cookies.json')
    cookies = json.load(cookie_file)
    print(cookies)
    context.add_cookies(cookies)
    page.goto(link)
    try:
        page.wait_for_timeout(10000)
        print(page.innerHTML("*"))
        page.close()
        context.close()
        browser.close()      
    except Exception as e:
        print("Error in playwright script.")
        page.close()
        context.close()
        browser.close()     
Run Code Online (Sandbox Code Playgroud)

但是,当我访问页面后想打印页面源时,我收到

Error in playwright script.
Run Code Online (Sandbox Code Playgroud)

因为我尝试过的代码不起作用:

print(page.innerHTML("*"))
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

python webautomation python-3.x playwright playwright-python

7
推荐指数
1
解决办法
9961
查看次数

Playwright 是否在命令行中提供自定义参数?

我想在命令行中创建自定义参数,以便当 process.argv 与自定义参数匹配时,我的相同规范会执行略有不同的操作。但我在文档中看不到该选项。我错过了还是剧作家不允许这样做?

playwright

7
推荐指数
1
解决办法
3837
查看次数

启动剧作家驱动程序会话,但不要隐身

目前我使用下面的代码打开一个新的浏览器会话,但它总是以隐身方式启动,我可以启动一个新的 chromium 会话但不以隐身方式启动吗?:

from behave import *
from playwright.sync_api import sync_playwright
import time


class session_driver:
    driver = None

    def open_browser(self, url):
        playW_sync_instace = sync_playwright().start()
        global browser
        browser = playW_sync_instace.chromium.launch(headless=False)
        browser.new_context(record_video_dir="videos/",
        record_video_size={"width": 640, "height": 480})
        self.driver = browser.new_page()
        self.driver.goto(url)
Run Code Online (Sandbox Code Playgroud)

python-3.x playwright playwright-python

7
推荐指数
1
解决办法
8758
查看次数

在 Puppeteer/Playwright 中通过标签文本选择输入

给出以下标记:

<label for="name">Name</label>
<input type="text" id="name" />
Run Code Online (Sandbox Code Playgroud)

我想在剧作家测试中填写输入值。但是,我更喜欢遵循类似于测试库的范例,它像真实用户一样使用选择器(通常是可见的文本内容)。因此,我希望我的剧作家选择器使用标签文本。

当我尝试以下操作时,我收到错误element is not an <input>,因为它选择了实际的标签元素: await page.fill('"Name"')

还有其他方法可以实现这一目标吗?

注意:我不热衷于使用 Playwright 测试库包,因为它还不够成熟。另外,我的理解是 Puppeteer 和 Playwright 实际上是相同的,因此为什么这个问题适用于这两个框架。

puppeteer playwright

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

使用 Playwright 在单个测试中使用多个测试装置

// foo.ts
import { test as base } from "@playwright/test";

const test = base.extend<{foo: string}>({
    foo: "hello"
});

export { test };
Run Code Online (Sandbox Code Playgroud)
// bar.ts
import { test as base } from "@playwright/test";

const test = base.extend<{bar: string}>({
    bar: "bye"
});

export { test };
Run Code Online (Sandbox Code Playgroud)
// index.ts
import { test } from /* BOTH_FOO_AND_BAR??? */;

test("Basic test", async ({ foo, bar }) => { // <-- I want to be able to use both foo and bar fixture here
    console.log(foo);
    console.log(bar); …
Run Code Online (Sandbox Code Playgroud)

typescript playwright playwright-test

6
推荐指数
1
解决办法
5032
查看次数

如何在 Javascript 的 Playwright Tests 中运行代码时防止浏览器关闭

我正在尝试在浏览器中记录网络调用。对于我的用例,我要求浏览器处于打开状态,并且只能使用脚本关闭。我目前正在使用 page.pause() 函数来防止浏览器自动关闭。有没有其他方法可以防止浏览器自动关闭。

test('Verify home page Load event',async({page})=>{
//const browser = await chromium.launchPersistentContext("",{headless:false});
await page.goto("https://samplesite.com")


await page.on('request',req=>{
    const requestUrl = req.url();
    if(requestUrl.indexOf("google-analytics.com/collect")>-1){
        console.log("Intercepted:->"+requestUrl);
        
    }else{            
        req.continue
    }        
}) 

await page.pause();
Run Code Online (Sandbox Code Playgroud)

})

我尝试检查Python的[链接](How to keep browser opening by the end of the code running with playwright-python?),但无法将其应用于JS。

javascript ui-automation node.js playwright

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