我在选择日期选择器按钮打开日历时遇到了问题,因此我无法选择日期。代码生成器运行程序建议使用以下代码:await page.getByRole('button', { name: 'Choose date, selected date is Feb 14, 2023' }).click();
这将只工作,如果我知道以前选择的日期。我可以使用regex像await page.getByRole("button", { name: /Choose date, selected date is/ }).click();
但如果页面上有多个日期选择器,则会中断。
我想按Tab键到按钮上,然后按Enter键,例如await page.getByLabel("Start date").press("Tab").press("Enter");
,或者如果我能在日期选择器中找到按钮,比如await page.getByLabel("Start date").getByRole("button").click();
但这两种方法都不起作用,有办法吗?
还有别的主意吗?
下面是一个示例测试,它可以在之前没有选择日期的情况下工作(注意,我使用first()
是因为页面上有其他日期选择器,这是我需要避免的)。
test("select from a date picker", async ({ page }) => {
await page.goto("https://mui.com/x/react-date-pickers/date-picker/");
await page.getByLabel("Basic Date Picker").click();
const datepicker = await page
.locator("div")
.filter({ hasText: "Basic date picker" })
.getByRole("button", { name: "Choose date" })
.first();
await datepicker.click();
await page
.getByRole("dialog", { name: "Basic date picker" })
.getByRole("gridcell", { name: "14" })
.click();
});
2条答案
按热度按时间oipij1gg1#
假设它在控件的右边缘有一个图标,单击该图标可以打开日历,您不能用途:
这是基于这个material-ui date-picker页面。
46scxncf2#
await page.getByLabel("Start date").getByRole("button").click();
不起作用的原因是按钮没有嵌套在日期字段下,它是一个兄弟元素。首先,您需要获取父对象,然后可以获取其中的按钮。
.locator("..")
将获取父对象,如本文所述只要页面上只有一个开始日期,这就可以了。