Best Python code snippet using playwright-python
test_element_handle_wait_for_element_state.py
Source:test_element_handle_wait_for_element_state.py  
...13# limitations under the License.14import asyncio15import pytest16from playwright.async_api import Error17async def give_it_a_chance_to_resolve(page):18    for i in range(5):19        await page.evaluate(20            "() => new Promise(f => requestAnimationFrame(() => requestAnimationFrame(f)))"21        )22async def wait_for_state(div, state, done):23    await div.wait_for_element_state(state)24    done[0] = True25async def wait_for_state_to_throw(div, state):26    with pytest.raises(Error) as exc_info:27        await div.wait_for_element_state(state)28    return exc_info29async def test_should_wait_for_visible(page):30    await page.set_content('<div style="display:none">content</div>')31    div = await page.query_selector("div")32    done = [False]33    promise = asyncio.create_task(wait_for_state(div, "visible", done))34    await give_it_a_chance_to_resolve(page)35    assert done[0] is False36    await div.evaluate('div => div.style.display = "block"')37    await promise38async def test_should_wait_for_already_visible(page):39    await page.set_content("<div>content</div>")40    div = await page.query_selector("div")41    await div.wait_for_element_state("visible")42async def test_should_timeout_waiting_for_visible(page):43    await page.set_content('<div style="display:none">content</div>')44    div = await page.query_selector("div")45    with pytest.raises(Error) as exc_info:46        await div.wait_for_element_state("visible", timeout=1000)47    assert "Timeout 1000ms exceeded" in exc_info.value.message48async def test_should_throw_waiting_for_visible_when_detached(page):49    await page.set_content('<div style="display:none">content</div>')50    div = await page.query_selector("div")51    promise = asyncio.create_task(wait_for_state_to_throw(div, "visible"))52    await div.evaluate("div => div.remove()")53    exc_info = await promise54    assert "Element is not attached to the DOM" in exc_info.value.message55async def test_should_wait_for_hidden(page):56    await page.set_content("<div>content</div>")57    div = await page.query_selector("div")58    done = [False]59    promise = asyncio.create_task(wait_for_state(div, "hidden", done))60    await give_it_a_chance_to_resolve(page)61    assert done[0] is False62    await div.evaluate('div => div.style.display = "none"')63    await promise64async def test_should_wait_for_already_hidden(page):65    await page.set_content("<div></div>")66    div = await page.query_selector("div")67    await div.wait_for_element_state("hidden")68async def test_should_wait_for_hidden_when_detached(page):69    await page.set_content("<div>content</div>")70    div = await page.query_selector("div")71    done = [False]72    promise = asyncio.create_task(wait_for_state(div, "hidden", done))73    await give_it_a_chance_to_resolve(page)74    assert done[0] is False75    await div.evaluate("div => div.remove()")76    await promise77async def test_should_wait_for_enabled_button(page, server):78    await page.set_content("<button disabled><span>Target</span></button>")79    span = await page.query_selector("text=Target")80    done = [False]81    promise = asyncio.create_task(wait_for_state(span, "enabled", done))82    await give_it_a_chance_to_resolve(page)83    assert done[0] is False84    await span.evaluate("span => span.parentElement.disabled = false")85    await promise86async def test_should_throw_waiting_for_enabled_when_detached(page):87    await page.set_content("<button disabled>Target</button>")88    button = await page.query_selector("button")89    promise = asyncio.create_task(wait_for_state_to_throw(button, "enabled"))90    await button.evaluate("button => button.remove()")91    exc_info = await promise92    assert "Element is not attached to the DOM" in exc_info.value.message93async def test_should_wait_for_disabled_button(page):94    await page.set_content("<button><span>Target</span></button>")95    span = await page.query_selector("text=Target")96    done = [False]97    promise = asyncio.create_task(wait_for_state(span, "disabled", done))98    await give_it_a_chance_to_resolve(page)99    assert done[0] is False100    await span.evaluate("span => span.parentElement.disabled = true")101    await promise102async def test_should_wait_for_editable_input(page, server):103    await page.set_content("<input readonly>")104    input = await page.query_selector("input")105    done = [False]106    promise = asyncio.create_task(wait_for_state(input, "editable", done))107    await give_it_a_chance_to_resolve(page)108    assert done[0] is False109    await input.evaluate("input => input.readOnly = false")...LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
