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

Playwright驱动浏览器

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

使用with上下文管理器

启动chromium浏览器


```python
# '''
# 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浏览器


```python
# '''
# 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)
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值