playwright 自动化框架python教程(十)[处理浏览器中的特殊操作]

Playwright 提供了一系列API来处理各种浏览器中的特殊操作

Playwright 提供了一系列API来处理各种浏览器中的特殊操作,包括弹窗(如alert、confirm、prompt)、新窗口的打开与管理,以及其他一些高级交互。以下是处理这些情况的一些建议方法:

弹窗处理

对于JavaScript弹窗(alert, confirm, prompt):

Python

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    
    # 监听dialog事件
    def handle_dialog(dialog):
        print(f"Dialog message: {dialog.message}")
        if dialog.type == "alert":
            # 处理alert弹窗,通常只有确认操作
            dialog.accept()
        elif dialog.type == "confirm":
            # 处理confirm弹窗,可以选择接受或拒绝
            if some_condition:
                dialog.accept()
            else:
                dialog.dismiss()
        elif dialog.type == "prompt":
            # 处理prompt弹窗,可以输入文本并决定接受或拒绝
            dialog.accept(input_text="Your input text")
            # 或者 dialog.dismiss() 来取消
    
    page.on("dialog", handle_dialog)
    
    # 导航到触发弹窗的页面
    page.goto("http://example.com/page-with-dialogs")
    
    browser.close()

dialog的其他方法:

1、dialog.default_value  #default_value, 如果对话框是提示的,则返回默认提示值。否则,返回空字符串。
2、dialog.message  #message 获取对话框中显示的消息
3、dialog.accept(**kwargs)  #要在提示中输入的文本。如果对话框 type 没有提示,则不会产生任何影响.

打开新窗口处理

处理页面中打开的新窗口(比如点击链接后新开窗口):

Python

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    
    # 监听new_page事件以捕获新打开的窗口
    def handle_new_page(new_page):
        print(f"New page opened: {new_page.url}")
        # 在这里你可以对新页面进行操作,比如获取URL、操作元素等
        
    page.on("popup", handle_new_page)  # 对于Playwright v1.19.0+,事件名已从"new_page"更新为"popup"
    
    # 导航到触发新窗口的页面
    page.goto("http://example.com/page-with-popups")
    
    # 如果需要在主页面上继续操作,确保在适当的地方等待或处理新窗口的逻辑
    
    browser.close()

playwright处理select元素

在 Playwright 中处理 <select> 元素通常涉及选择或更改下拉列表中的选项。你可以使用 page.select_option() 方法来实现这一操作。以下是一些基本的使用方法:

选择单个选项

你可以根据选项的值 (value)、索引或者标签文本 (label) 来选择一个选项。以下是如何根据不同的条件选择选项的例子:

Python

select元素的id=your-select-element

# 根据选项的 value 选择
page.select_option('#your-select-element', value='option_value')

# 根据选项的文本(label)选择
page.select_option('#your-select-element', label='Option Text')

# 根据选项的索引选择(索引从0开始)
page.select_option('#your-select-element', index=0)

选择多个选项

如果 <select> 元素允许多选(multiple 属性被设置),你可以传递一个选项值或标签的列表来选择多个选项:

Python

# 选择多个选项
page.select_option('select[multiple]', values=['option_value_1', 'option_value_2'])
# 或者根据标签选择
page.select_option('select[multiple]', labels=['Option Text 1', 'Option Text 2'])
获取当前选中项

获取当前选中项的值或文本,可以通过evaluate方法执行JavaScript代码:

Python

# 获取选中项的值
selected_value = page.eval_on_selector('#example-select', 'select => select.value')
print(f"Selected value: {selected_value}")

# 获取选中项的文本
selected_text = page.eval_on_selector('#example-select', 'select => select.options[select.selectedIndex].text')
print(f"Selected text: {selected_text}")
清除选择

如果你需要清除所有选择(对于多选<select multiple>),可以通过设置空字符串实现:

Python

# 清除选择(如果是多选)
page.select_option('#example-select', value='')

在实际操作中,你可能需要先定位到 <select> 元素。除了直接使用CSS选择器外,还可以利用 Playwright 的链式方法,比如 get_by_role, get_by_label 等来提高选择器的可读性和健壮性:

Python

# 根据角色定位
select_element = page.get_by_role('combobox')

# 根据关联的 <label> 文本定位
select_element = page.get_by_label('Select Label').locator('select')

这样,你就可以更加灵活且高效地在自动化测试中处理 <select> 元素了。

其他特殊操作

  • 文件上传:通过模拟用户选择文件的交互来上传文件。

    Python
    page.locator("[type=file]").set_input_files("/path/to/your/file.jpg")
  • 操作浏览器上下文菜单:虽然直接操作上下文菜单不容易,但可以通过模拟右键点击(.click(button='right'))然后选择特定的菜单项(可能需要结合键盘输入或进一步的点击操作)间接实现。

  • 处理重定向:Playwright会自动跟随重定向,但你可以在请求事件监听器中检查response.status()response.url来识别重定向行为。

记住,对于特定的操作,查阅Playwright的官方文档总是最佳实践,因为API可能会随版本更新而变化。

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到适用的Playwright自动化框架时,Robot Framework是一个很好的选择。Robot Framework是一个通用的自动化测试框架,它提供了丰富的库和插件,可以与多种自动化工具和库集成,包括Playwright。 要在Robot Framework使用Playwright,你可以按照以下步骤操作: 1. 安装Robot Framework: 首先,你需要安装Robot Framework。你可以通过以下命令来安装Robot Framework的Python库: ``` pip install robotframework ``` 2. 安装Robot Framework Playwright库: 接下来,你需要安装Robot Framework的Playwright库。你可以通过以下命令来安装: ``` pip install robotframework-playwright ``` 3. 创建测试用例: 创建一个.robot文件,可以使用任何文本编辑器打开。在文件编写测试用例和关键字,如下所示: ```robotframework *** Settings *** Library Playwright *** Test Cases *** Example Test Open Browser chromium Go To https://www.example.com Fill Text name=username your_username Fill Text name=password your_password Click Button id=login-button Page Should Contain Element css=.welcome-message Close Browser ``` 4. 运行测试用例: 在命令行,使用以下命令来运行测试用例: ``` robot your_test_case.robot ``` 这样,你就可以使用Robot Framework和Playwright进行自动化测试了。Robot Framework提供了丰富的关键字和库,可以帮助你处理各种自动化操作。你可以使用Playwright的关键字来执行浏览器操作,如打开浏览器、导航、填写表单、点击按钮等。 请注意,这只是一个基本的示例,你可以根据自己的需求和场景进行扩展和定制。你可以查阅Robot Framework和Playwright的官方文档以获取更多详细信息和示例。如果你遇到任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值