У меня есть функция, которая щелкает локатор, и я хочу использовать локатор в качестве параметра строки типа или RegExp.
export async function clickRegexLocator(page: Page, locator:string|RegExp) {
await page.locator(locator).click();
}
Локатор выглядит примерно так: число 4 всегда меняется на что-то другое, и я хочу использовать регулярное выражение вместо числа 4.
'#react-select-4-option-0'
Моя проблема в том, что функция в том виде, в каком она написана, отображает ошибку:
Argument of type 'string | RegExp' is not assignable to parameter of type 'string'.
Type 'RegExp' is not assignable to type 'string'
Какое решение я могу использовать в этом случае регулярное выражение, чтобы перейти от этого
clickRegexLocator(page, '#react-select-4-option-0');
к этому ?
clickRegexLocator(page, /#react-select-/\d+-option-0/);
Regex on Ids пока не поддерживается, вы можете проголосовать за этот запрос функции.
Вы можете использовать префикс сопоставления атрибутов CSS, например
locator("[id^=react-select-]")
но я бы определенно попытался найти лучший способ найти этот элемент.
основываясь на вашем ответе, я смог сформулировать await page.locator("[id^=react-select-][id$=option-0]").click();
то, что мне нужно. Спасибо!
это было бы отличным обходным решением, но элемент невозможно найти по «id», как в вашем коде. Он работает только с линией
await page.locator('#react-select-4-option-0').click();
Основываясь на моей единственной строке, которая до сих пор работала, как я могу использовать ее, чтобы щелкнуть локатор только по первой части локатора, что-то вродеawait page.locator('#react-select-').click();
, который не найдет локатор