01新一代自动化测试神器playwright+python系列课程_playwright驱动浏览器

Playwright驱动浏览器

安装 Playwright 时,Playwright默认自动安装了三种浏览器(Chromium、Firefox 和 WebKit)。我们可以驱动这三种浏览器中的任意一种。

使用with上下文管理器

启动chromium浏览器

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

from playwright.sync_api import sync_playwright,Playwright,expect

with sync_playwright() as p:

    browser = p.chromium.launch(headless=False) # 设置有头模式启动chrome浏览器

    context = browser.new_context() # 创建上下文,打开浏览器

    page = context.new_page() # 打开标签页

    page.goto('127.0.0.1')

    page.wait_for_timeout(10000)

    context.close()

    browser.close()

启动firefox浏览器

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

from playwright.sync_api import sync_playwright,Playwright,expect

with sync_playwright() as p:

    browser = p.firefox.launch(headless=False) # 设置有头模式启动chrome浏览器

    context = browser.new_context() # 创建上下文,打开浏览器

    page = context.new_page() # 打开标签页

    page.goto('127.0.0.1')

    page.wait_for_timeout(10000)

    context.close()

    browser.close()

启动webkit浏览器

'''

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

from playwright.sync_api import sync_playwright,Playwright,expect

with sync_playwright() as p:

    browser = p.webkit.launch(headless=False) # 设置有头模式启动chrome浏览器

    context = browser.new_context() # 创建上下文,打开浏览器

    page = context.new_page() # 打开标签页

    page.goto('127.0.0.1')

    page.wait_for_timeout(10000)

    context.close()

    browser.close()

不使用with上下文管理器

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

from playwright.sync_api import sync_playwright,Playwright,expect

playwright = sync_playwright().start()

browser = playwright.chromium.launch(headless=False) # 设置有头模式启动chrome浏览器,没执行一个动作等待2秒

context = browser.new_context() # 创建上下文,打开浏览器

page = context.new_page() # 打开标签页

page.goto('127.0.0.1')

page.get_by_text('开源版').click()

page.locator('#account').fill('admin')

page.locator('[name="password"]').fill('Deshifuzhi01')

page.locator('#submit')

page.wait_for_timeout(10000)

context.close()

browser.close()

playwright.stop()

同时打开多个浏览器执行

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

from playwright.sync_api import sync_playwright,Playwright,expect

with sync_playwright() as p:

    browser = p.chromium.launch(headless=False,slow_mo=1000) # 启动本地的谷歌浏览器,设置有头模式启动chrome浏览器

    context1 = browser.new_context() # 创建上下文,打开浏览器

    context2 = browser.new_context() # 创建上下文,打开浏览器

    page = context1.new_page() # 打开标签页

    page2 = context2.new_page() # 打开标签页

    page.goto('http://127.0.0.1/zentao/user-login-L3plbnRhby8=.html')

    page2.goto('http://127.0.0.1:8080/oa/')

    page.locator('#account').fill('admin')

    page.locator('[name="password"]').fill('Deshifuzhi01')

    page.locator('#submit')

    page.wait_for_timeout(10000)

    page2.locator('[name="loginId"]').fill('sup')

    page2.locator('[name="password"]').fill('s1234567')

    page2.locator('#button_submit').click()

    page2.wait_for_timeout(10000)

    context1.close()

    context2.close()

    browser.close()

一个浏览器中同时打开多个标签页分别执行

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

from playwright.sync_api import sync_playwright,Playwright,expect

with sync_playwright() as p:

    browser = p.chromium.launch(headless=False,slow_mo=1000) # 启动本地的谷歌浏览器,设置有头模式启动chrome浏览器

    context = browser.new_context() # 创建上下文,打开浏览器

    page = context.new_page() # 打开标签页

    page2 = context.new_page() # 打开标签页

    page.goto('http://127.0.0.1/zentao/user-login-L3plbnRhby8=.html')

    page2.goto('http://127.0.0.1:8080/oa/')

    page.locator('#account').fill('admin')

    page.locator('[name="password"]').fill('Deshifuzhi01')

    page.locator('#submit').click()

    page.wait_for_timeout(10000)

    page2.locator('[name="loginId"]').fill('sup')

    page2.locator('[name="password"]').fill('s1234567')

    page2.locator('#button_submit').click()

    page2.wait_for_timeout(10000)

    context.close()

    browser.close()

slow_mo减慢执行速度

Playwright 打开浏览器运行脚本的速度那就是一个字:快!相对于selenium,playwright执行速度会更快,眨眼间就完事了。因此为了便于我们查看执行的过程,我们可以加上等待来减缓执行,但是与selenium不同,playwright通过slow_mo (单位是毫秒)减慢执行速度,它的作用范围是全局的,从启动浏览器到操作元素每个动作都会有等待间隔,方便在出现问题的时候看到页面操作情况。使用方法如下:

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

from playwright.sync_api import sync_playwright,Playwright,expect

playwright = sync_playwright().start()

browser = playwright.chromium.launch(headless=False,slow_mo=2000) # 设置有头模式启动chrome浏览器,没执行一个动作等待2秒

context = browser.new_context() # 创建上下文,打开浏览器

page = context.new_page() # 打开标签页

page.goto('127.0.0.1')

page.get_by_text('开源版').click()

page.locator('#account').fill('admin')

page.locator('[name="password"]').fill('Deshifuzhi01')

page.locator('#submit')

page.wait_for_timeout(10000)

context.close()

browser.close()

playwright.stop()

以上案例为同步模式驱动浏览器,接下来我们看一下异步模式:

# '''

# author: 测试-老姜   交流微信/QQ:349940839

# 欢迎添加微信或QQ,加入学习群共同学习交流。

# QQ交流群号:877498247

# 西安的朋友欢迎当面交流。

# '''

import asyncio

from playwright.async_api import async_playwright,Playwright,expect

async def run(playwright):

            browser =await playwright.chromium.launch(headless=False,slow_mo=1000) # 启动本地的谷歌浏览器,设置有头模式启动chrome浏览器

            context =await browser.new_context() # 创建上下文,打开浏览器

            page = await context.new_page() # 打开标签页

            page2 = await  context.new_page() # 打开标签页

            await page.goto('http://127.0.0.1/zentao/user-login-L3plbnRhby8=.html')

            await page2.goto('http://127.0.0.1:8080/oa/')

            await page.locator('#account').fill('admin')

            await page.locator('[name="password"]').fill('Deshifuzhi01')

            await page.locator('#submit').click()

            await page.wait_for_timeout(10000)

            await page2.locator('[name="loginId"]').fill('sup')

            await page2.locator('[name="password"]').fill('s1234567')

            await page2.locator('#button_submit').click()

            await page2.wait_for_timeout(10000)

            context.close()

            browser.close()


async def main() -> None:

    async with async_playwright() as playwright:

        await run(playwright)

asyncio.run(main())

启动本地浏览器

Playwright启动浏览器时,默认启动Playwright安装的浏览器,如果想要启动本地安装的浏览器,可在启动浏览器时通过channel 指定打开浏览器

Google Chrome 和 Microsoft Edge浏览器都是用的 chromium 内核,所以只需加一个channel="chrome" 即可打开本地谷歌浏览器(需要将谷歌浏览器安装目录C:\Program Files\Google\Chrome\Application 添加到环境变量Path下)

browser=p.chromium.launch(channel="chrome",headless=False)

posted @ 2024-03-21 10:57  测试_老姜  阅读(144)  评论(0)    收藏  举报