Is there any way to find an element by a part of the placeholder value? And ideally, case insensitive.
<input id="id-9" placeholder="some TEXT">
Search by the following function doesn't work
browser.find_element(by=By.XPATH, value="//input[@placeholder='some te']")
CodePudding user response:
You can always use contains
instead of equals
, as following:
browser.find_element(By.XPATH, "//input[contains(@placeholder,'some te')]")
To make it case-insensitive you can use translate
function, as following:
browser.find_element(By.XPATH, "//input/@placeholder[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),'some te')]")
Case-insensitive contains
Xpath is taken from this question
CodePudding user response:
@Prophet's answer is good, but I wanted to add CSS case too since it may be helpful.
You can use ^=
to search for attributes starting with certain keyword and $=
for attribute starting with certain keywrd and ~=
for attribute containing a keyword.
browser.find_element(By.CSS_SELECTOR, "input[placeholder~='some te"])
You can make it case-insensitive by adding i
before closing the bracket
browser.find_element(By.CSS_SELECTOR, "input[placeholder~='some te" i])