能否通过.runsettings文件设置Playwright的ViewportSize?
关于Playwright + NUnit中通过.runsettings配置ViewportSize及相关配置项说明
一、能不能通过.runsettings直接配置ViewportSize?
不行。你尝试放在<LaunchOptions>里的<ViewportSize>是无效的——ViewportSize属于**浏览器上下文(BrowserContext)**的配置项,而非浏览器启动(LaunchOptions)的参数。LaunchOptions只负责浏览器进程的启动参数(比如是否无头、浏览器渠道、启动命令行参数等),ViewportSize是每个上下文(页面所属运行环境)的专属设置。
二、Playwright在.runsettings中的可配置项
目前Playwright官方支持在.runsettings的<Playwright>节点下配置以下核心内容:
<BrowserName>:指定默认启动的浏览器,可选值:chromium、firefox、webkit<ExpectTimeout>:全局设置expect断言的超时时间(单位:毫秒)<LaunchOptions>:对应Playwright的BrowserLaunchOptions,支持的子项包括:<Headless>:是否以无头模式启动(true/false)<Channel>:指定浏览器渠道,比如chrome、msedge、chrome-beta等<Args>:浏览器启动命令行参数,例如<Args>--start-maximized</Args><SlowMo>:设置每个操作的延迟时间(单位:毫秒)<Timeout>:浏览器启动超时时间(单位:毫秒)
注意:<LaunchOptions>不包含任何浏览器上下文相关配置(比如ViewportSize、Cookie、权限等)
三、Playwright常用环境变量
可在.runsettings的<EnvironmentVariables>节点配置Playwright相关环境变量,常用的有:
DEBUG:用于调试,设置为pw:api会打印所有Playwright API调用日志,pw:browser会打印浏览器进程相关日志PLAYWRIGHT_BROWSERS_PATH:指定浏览器二进制文件的存储路径,默认是用户目录下的.playwright文件夹PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD:设置为1则跳过浏览器自动下载PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH:指定自定义的Chromium浏览器可执行文件路径(同理还有PLAYWRIGHT_FIREFOX_EXECUTABLE_PATH、PLAYWRIGHT_WEBKIT_EXECUTABLE_PATH)PLAYWRIGHT_TIMEOUT:全局设置Playwright操作的超时时间(单位:毫秒)
四、通过.runsettings间接配置ViewportSize的方案
虽然不能直接写,但可以通过两种方式间接实现:
方案1:用环境变量传递ViewportSize
在.runsettings里添加环境变量:
<RunConfiguration> <EnvironmentVariables> <VIEWPORT_WIDTH>2048</VIEWPORT_WIDTH> <VIEWPORT_HEIGHT>1080</VIEWPORT_HEIGHT> </EnvironmentVariables> </RunConfiguration>
然后在测试类重写ContextOptions时读取这些变量:
public override BrowserContextOptions ContextOptions() { var options = base.ContextOptions(); var width = int.Parse(Environment.GetEnvironmentVariable("VIEWPORT_WIDTH") ?? "1920"); var height = int.Parse(Environment.GetEnvironmentVariable("VIEWPORT_HEIGHT") ?? "1080"); options.ViewportSize = new ViewportSize { Width = width, Height = height }; return options; }
方案2:自定义.runsettings配置段
在.runsettings里添加自定义配置:
<Playwright> <BrowserName>chromium</BrowserName> <ExpectTimeout>5000</ExpectTimeout> <LaunchOptions> <Headless>false</Headless> <Channel>chrome</Channel> </LaunchOptions> <!-- 自定义上下文配置 --> <ContextOptions> <ViewportSize> <Width>2048</Width> <Height>1080</Height> </ViewportSize> </ContextOptions> </Playwright>
然后在测试类里读取配置(需引用Microsoft.Extensions.Configuration相关包):
public override BrowserContextOptions ContextOptions() { var options = base.ContextOptions(); // 读取runsettings配置 var config = new ConfigurationBuilder() .AddXmlFile("your-runsettings-file.runsettings") .Build(); var width = config.GetValue<int>("Playwright:ContextOptions:ViewportSize:Width"); var height = config.GetValue<int>("Playwright:ContextOptions:ViewportSize:Height"); options.ViewportSize = new ViewportSize { Width = width, Height = height }; return options; }
内容的提问来源于stack exchange,提问作者Joshmar Steffens
相关产品推荐
相关产品推荐

