Я пытаюсь выбрать значение из раскрывающегося списка Angular, используя Playwright-Java. Ошибка из-за найденного нескольких значений. Как однозначно идентифицировать по тексту.
getPage().locator(obj).click();
Locator list = getPage().locator("//span[@class='mat-option-text']", new Page.LocatorOptions().setHasText(value));
list.click();
Исключение: com.microsoft.playwright.PlaywrightException: Ошибка { message='Ошибка: нарушение строгого режима: locator("//span[@class='mat-option-text']").filter(new Locator.FilterOptions().setHasText("Корпорация")) разрешено до 2 элементов :
Доступен ли .setExact(true)
, чтобы гарантировать, что он соответствует только «Корпорации»?
@ggorlen — .setExact(true) не поддерживается для Page.LocatorOptions()
@AutomationAndy — setExact(true) не поддерживается для метода Page.LocatorOptions(). setExact(true) предназначен для Page.GetByTextOptions()
Если вы хотите использовать селекторы CSS — вы можете использовать first()
page.locator(".mat-option-text", { hasText: "Corporation" }).first()
Другой вариант getByText или getByRole — exact
может помочь.
page.getByRole("option", { name: "Corporation", exact: true })
// or
page.getByText("Corporation", { exact: true })
или на Яве
page.getByText("Corporation", new Page.GetByTextOptions().setExact(true)
Мне удалось решить проблему, пройдя по всему списку элементов и установив условие для ожидаемого элемента.