Tutorial 11 – Assert Multi-select dropdown values in Playwright Python
What you will Learn in this blog:
Assert multiple-select dropdown values
Asserting using regular expressions
Code snippet
Assert multiple-select dropdown values
In the previous blog https://www.way2automation.com/multi-select-dropdown-list-in-playwright-python/ , we have seen how to select multiple values from the dropdown list
In this blog, we will see how do we assert the selected values.
Go to official page
https://playwright.dev/python/docs/test-assertions
Click expect(locator).to_have_values() method and notice that this assertion method was added in playwright version 1.23
So, before we proceed, let us make sure that we have playwright version >= 1.23
To do that, let us check the playwright version by execution ‘pip list’ command:
As seen above, we do have playwright ver >1.23
If you are having an older version, than execute the below 2 commands in sequence:
pip install --upgrade playwright
playwright install (to upgrade browsers)
Below is the code snippet from previous blog
Comment line#3 and let us separate out the locator (line#14):
Next we can write
Next, we can use the to_have_values() method
We can now mention the values that we expect during runtime
Save and execute
The assertion passes
Let us introduce an error in script
Save and execute.
This time we can see that the assertion fails
Asserting using regular expressions
Go to https://playwright.dev/python/docs/api/class-locatorassertions#locator-assertions-to-have-values
We can see the usage of regular expressions (‘re’ stands for regular expression)
Let us import ‘re’ library
Comment line #18 and add line#19 using ‘Re’.
So basically, instead of writign ‘May’, we are writing ‘M’ and so on
Save and execute, the assertion passes
Code snippet
import time
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False, slow_mo=3000)
context = browser.new_context()
page = context.new_page()
page.goto("https://selenium08.blogspot.com/2019/11/dropdown.html")
#page.locator("select[name='Month']").select_option(['May', 'July', 'Sept'])
loc = page.locator("select[name='Month']")
loc.select_option(['May', 'July', 'Sept'])
#Assertion
expect(loc).to_have_values(['My', 'July', 'Sept'])
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
Code snippet (regular expr)
import time
import re
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False, slow_mo=3000)
context = browser.new_context()
page = context.new_page()
page.goto("https://selenium08.blogspot.com/2019/11/dropdown.html")
#page.locator("select[name='Month']").select_option(['May', 'July', 'Sept'])
loc = page.locator("select[name='Month']")
loc.select_option(['May', 'July', 'Sept'])
#Assertion
#expect(loc).to_have_values(['May', 'July', 'Sept'])
expect(loc).to_have_values([re.compile(r"M"), re.compile(r"J"), re.compile(r"S")])
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
Thank you for reading!