예제 #1
0
async def test_should_emit_event(page: Page, server):
    await page.setContent("<input type=file>")
    fc_done: asyncio.Future = asyncio.Future()
    page.once("filechooser", lambda file_chooser: fc_done.set_result(file_chooser))
    await page.click("input")
    file_chooser = await fc_done
    assert file_chooser
예제 #2
0
async def test_should_be_able_to_reset_selected_files_with_empty_file_list(
        page: Page, server):
    await page.set_content("<input type=file>")
    page.once("filechooser",
              lambda file_chooser: file_chooser.set_files(FILE_TO_UPLOAD))
    file_length = 0
    async with page.expect_file_chooser():
        file_length = await page.eval_on_selector(
            "input",
            """async picker => {
                picker.click();
                await new Promise(x => picker.oninput = x);
                return picker.files.length;
            }""",
        )
    assert file_length == 1

    page.once("filechooser", lambda file_chooser: file_chooser.set_files([]))
    async with page.expect_file_chooser():
        file_length = await page.eval_on_selector(
            "input",
            """async picker => {
                picker.click();
                await new Promise(x => picker.oninput = x);
                return picker.files.length;
            }""",
        )
    assert file_length == 0
예제 #3
0
async def test_should_emit_event(page: Page):
    await page.set_content("<input type=file>")
    fc_done: asyncio.Future = asyncio.Future()
    page.once("filechooser",
              lambda file_chooser: fc_done.set_result(file_chooser))
    await page.click("input")
    file_chooser = await fc_done
    assert file_chooser
    assert (
        repr(file_chooser) ==
        f"<FileChooser page={file_chooser.page} element={file_chooser.element}>"
    )
예제 #4
0
async def test_console_should_work(page: Page, server):
    messages: List[ConsoleMessage] = []
    page.once("console", lambda m: messages.append(m))
    async with page.expect_console_message() as message_info:
        await page.evaluate('() => console.log("hello", 5, {foo: "bar"})')
    message = await message_info.value
    assert message.text == "hello 5 JSHandle@object"
    assert str(message) == "hello 5 JSHandle@object"
    assert message.type == "log"
    assert await message.args[0].json_value() == "hello"
    assert await message.args[1].json_value() == 5
    assert await message.args[2].json_value() == {"foo": "bar"}
예제 #5
0
async def test_console_should_work(page: Page, server):
    messages: List[ConsoleMessage] = []
    page.once("console", lambda m: messages.append(m))
    await asyncio.gather(
        page.evaluate('() => console.log("hello", 5, {foo: "bar"})'),
        page.wait_for_event("console"),
    )
    assert len(messages) == 1
    message = messages[0]
    assert message.text == "hello 5 JSHandle@object"
    assert str(message) == "hello 5 JSHandle@object"
    assert message.type == "log"
    assert await message.args[0].json_value() == "hello"
    assert await message.args[1].json_value() == 5
    assert await message.args[2].json_value() == {"foo": "bar"}
예제 #6
0
async def test_should_be_able_to_read_selected_file(page: Page):
    page.once("filechooser",
              lambda file_chooser: file_chooser.set_files(FILE_TO_UPLOAD))
    await page.set_content("<input type=file>")
    content = await page.eval_on_selector(
        "input",
        """async picker => {
            picker.click();
            await new Promise(x => picker.oninput = x);
            const reader = new FileReader();
            const promise = new Promise(fulfill => reader.onload = fulfill);
            reader.readAsText(picker.files[0]);
            return promise.then(() => reader.result);
        }""",
    )
    assert content == "contents of the file\n"
예제 #7
0
async def test_should_be_able_to_reset_selected_files_with_empty_file_list(
    page: Page, server
):
    await page.setContent("<input type=file>")
    page.once(
        "filechooser",
        lambda file_chooser: asyncio.create_task(file_chooser.setFiles(FILE_TO_UPLOAD)),
    )
    file_length_1 = (
        await asyncio.gather(
            page.waitForEvent("filechooser"),
            page.evalOnSelector(
                "input",
                """async picker => {
                    picker.click();
                    await new Promise(x => picker.oninput = x);
                    return picker.files.length;
                }""",
            ),
        )
    )[1]
    assert file_length_1 == 1

    page.once(
        "filechooser",
        lambda file_chooser: asyncio.create_task(file_chooser.setFiles([])),
    )
    file_length_2 = (
        await asyncio.gather(
            page.waitForEvent("filechooser"),
            page.evalOnSelector(
                "input",
                """async picker => {
                    picker.click()
                    await new Promise(x => picker.oninput = x)
                    return picker.files.length
                }""",
            ),
        )
    )[1]
    assert file_length_2 == 0