使用Playwright .NET在Rider IDE中编写C#测试时遇“Cannot resolve symbol 'Expect'”问题求助
嘿,我在Rider里折腾Playwright .NET测试的时候也碰到过一模一样的问题!看了你的代码,这个Expect找不到的情况,大概率是下面几个常见原因导致的,给你逐个排查的方向:
先检查命名空间是否正确引用
Playwright .NET里的Expect断言方法是放在Microsoft.Playwright.Assertions这个命名空间下的,你得在代码文件最顶部加上这行引用:using Microsoft.Playwright.Assertions;要是已经加了,别急,试试右键你的项目选择「重新加载项目」,或者用Rider的重新索引快捷键(Windows是
Ctrl+Shift+R,Mac是Cmd+Shift+R)——有时候IDE的索引慢半拍,就会出现明明代码没问题却报红的情况。确认Playwright NuGet包的安装情况
你得确保项目里已经正确安装了Microsoft.Playwright这个核心NuGet包,要是用测试运行器的话,Microsoft.Playwright.TestAdapter也得装上。打开Rider的NuGet包管理器,搜这两个包,看看是不是装了最新的稳定版——毕竟Expect这种断言API是Playwright .NET后续版本才推出的,旧版本可能没有这个方法。检查
Expect的调用写法
看你代码里的问题行,写法本身是没问题的:await Expect(page.GetByRole(AriaRole.Heading, new() { Name = "Authenticating to GitHub" }).GetByRole(AriaRole.Link)).ToBeVisibleAsync();但前提是前面的命名空间和包都没问题,要是前面的步骤都做了还是不行,试试把这行代码删掉重新敲一遍,有时候IDE的语法识别会抽风。
试试清理Rider的缓存
要是上面的方法都不管用,那大概率是Rider的缓存出问题了。你可以试试:- 关闭Rider,删除项目根目录下的
.idea文件夹 - 或者在Rider里点击
File -> Invalidate Caches...,选择清理缓存并重启IDE
- 关闭Rider,删除项目根目录下的
对了,你的测试代码我整理了一下,问题行就是最后那行带Expect的代码:
public async Task GitWebTest() { using var playwright = await Playwright.CreateAsync(); await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions{Headless = false,}); var context = await browser.NewContextAsync(); var page = await context.NewPageAsync(); await page.GotoAsync("https://github.com/executeautomation"); await page.GetByRole(AriaRole.Link, new() { Name = "Packages" }).ClickAsync(); await page.GetByRole(AriaRole.Link, new() { Name = "Learn more about npm" }).ClickAsync(); await page.GetByRole(AriaRole.Heading, new() { Name = "Working with the npm registry" }).ClickAsync(); // 下面这行就是报"Cannot resolve symbol 'Expect'"的问题行 await Expect(page.GetByRole(AriaRole.Heading, new() { Name = "Authenticating to GitHub" }).GetByRole(AriaRole.Link)).ToBeVisibleAsync(); }
内容来源于stack exchange

