Skip to content

[Feature]: Submit the issue of duplicate key-value pairs in the form #2834

@KaHuier

Description

@KaHuier

🚀 Feature Request

Submit the issue of duplicate key-value pairs in the form

Example

The data required by the server interface is as follows:
test=1&test=2&test=3&mc=kaka

The implementation plan for sending requests is outlined below:

import requests

response = requests.post(
    url='http://127.0.0.1:5000/form',
    verify=False,
    data={
        "test": ["1", "2", "3"],
        "mc": "kaka"
    }
)
print(response.text)

It should be noted that Playwright does not natively support passing repeated key-value pairs, as they are escaped during serialization. To address this limitation, the following temporary solution has been implemented:

from typing import Optional, List, Dict
from playwright._impl._helper import NameValue


def object_to_array(obj: Optional[Dict]) -> Optional[List[NameValue]]:
    if not obj:
        return None
    result = []
    for key, value in obj.items():
        if isinstance(value, (tuple, list)):
            for v in value:
                result.append(NameValue(name=key, value=str(v)))
        else:
            result.append(NameValue(name=key, value=str(value)))
    return result


_helper.object_to_array = object_to_array

from playwright.sync_api import sync_playwright


playwright = sync_playwright().start()
browser = playwright.chromium.launch()
page = browser.new_page()
response = page.request.post(
    url='http://127.0.0.1:5000/form',
    form={
        "test": ["1", "2", "3"],
        "mc": "kaka"
    }
)
print(response.text)

Motivation

When encountering a duplicate key-value pair that needs to be submitted in the form in the interface

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions