python使用playwright学习笔记-鼠标拖拽

Playwright鼠标操作详解

相比于selenium使用ActionChains类型进行鼠标的操作,playwright可直接在page对象使用鼠标操作。

操作方法

page.mouse的常用方法

方法说明
click()点击对应坐标x,y
down()鼠标左键按下状态
up()鼠标左键抬起状态
move()鼠标移动到对应坐标
dbclick()鼠标双击对应坐x,y
wheel()鼠标滚轮滑动滚动x,y(滚动条操作)

page也有元素拖拽方法:drag_and_drop(),可以把元素source拖拽到元素target位置,在需要坐标系上进行拖拽时,例如画布上的复杂拖拽操作还是要使用mouse通过x,y坐标进行拖拽。

可以通过上述方法的组合以及获取元素的坐标实现对元素的拖拽操作,示例说明代码如下:

    element = page.locator('[id=kw]')
    location = element.bounding_box()
    # 获取元素的中心坐标
    x = location['x'] + location['width']/2
    y = location['y'] + location['height']/2
    # 移动到元素下鼠标左键按下状态
    page.mouse.move(x=x, y=y, steps=10)
    page.mouse.down()
    # 拖拽到坐标下鼠标坐标抬起释放元素
    page.mouse.move(x=x+100, y=y+200, steps=20)
    page.mouse.up()

move方法中的steps参数表示执行的步骤,步骤值越高move的动作就越慢(有时候执行太快,前端拖拽时,无法触发js的响应,导致拖拽无效)

如下为实现的效果图,实际代码跟示例代码有所差别,核心方法都是一样的(主要是没找到对外都可访问的画布网站,抱歉)

<think>好的,我现在需要帮助用户解决如何用PythonPlaywright生成测试报告并通过邮件发送通知的问题。首先,我得回忆一下Playwright的测试报告生成方法。记得Playwright本身支持生成多种格式的报告,比如HTML和JSON。用户提到的Monocart可能是一个第三方库,可以用来优化报告样式,但需要确认具体的使用步骤。 接下来,用户想要将测试报告通过邮件发送。这涉及到邮件的自动化发送,可能需要用到Python的smtplib和email库。需要构造邮件内容,添加附件,然后连接到SMTP服务器发送。此外,用户可能需要在测试完成后自动触发这一过程,所以需要将发送邮件的代码集成到测试脚本的后续步骤中。 然后,我需要考虑用户可能的实际需求。比如,他们可能希望测试报告美观且信息完整,所以生成HTML报告比较合适。邮件通知可能需要包含报告附件,并在正文中简要说明测试结果。同时,用户可能希望邮件发送失败时能有日志记录或者重试机制,但作为基础实现,可能先完成基本功能再考虑优化。 还需要检查引用内容中的信息是否相关。引用[2]提到使用Monocart生成精美的HTML报告,并打开查看。这可能是一个关键点,需要指导用户如何生成报告文件,然后作为附件发送邮件。引用[1]是关于调用API发送通知,但用户这次的需求是邮件,所以可能需要调整思路,用SMTP而不是第三方API。 最后,步骤应该是:1. 生成测试报告,2. 编写发送邮件的函数,3. 在测试完成后调用发送函数。需要确保代码示例正确,比如使用Playwright的测试钩子来触发报告生成,以及正确处理附件的添加。同时,提醒用户替换邮箱服务器的配置信息,比如SMTP地址、端口、账号密码等,确保安全性,比如建议使用环境变量存储敏感信息。</think>### 如何用Python Playwright实现测试报告与邮件通知? 以下是分步实现方法,结合代码示例和关键工具说明: 1. **生成HTML测试报告** 使用`pytest-playwright`内置报告功能,配合`monocart-coverage-reporter`优化报告样式: ```python # conftest.py def pytest_configure(config): config.option.htmlpath = "test-results/report.html" # 测试用例执行后自动生成报告 ``` 2. **邮件通知实现** 使用`smtplib`和`email`库构建邮件发送功能: ```python import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIMEApplication def send_email(report_path): msg = MIMEMultipart() msg["From"] = "sender@example.com" msg["To"] = "receiver@example.com" msg["Subject"] = "Playwright测试报告" # 添加正文 body = MIMEText("本次自动化测试已完成,报告见附件", "plain") msg.attach(body) # 添加报告附件 with open(report_path, "rb") as f: part = MIMEApplication(f.read(), Name="report.html") part["Content-Disposition"] = 'attachment; filename="report.html"' msg.attach(part) # 发送邮件 with smtplib.SMTP("smtp.example.com", 587) as server: server.starttls() server.login("user", "password") server.send_message(msg) ``` 3. **集成到测试流程** 在测试执行后调用邮件发送: ```python # test_example.py import pytest @pytest.fixture(scope="session", autouse=True) def finalize(request): def send_report(): report_path = "test-results/report.html" send_email(report_path) request.addfinalizer(send_report) ``` 4. **安全配置建议** 推荐使用环境变量存储敏感信息: ```bash # .env文件 SMTP_SERVER=smtp.example.com SMTP_PORT=587 EMAIL_USER=user@example.com EMAIL_PASSWORD=your_password ``` ### 关键技术点说明 - **报告优化**:通过Monocart生成的HTML报告包含可视化时间轴和截图功能[^2] - **邮件协议**:使用SMTP_SSL(465端口)更安全 - **附件处理**:支持同时附加JSON报告、控制台日志等文件 - **触发时机**:可通过CI/CD工具(如Jenkins)在测试任务完成后自动执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值