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!!