因此,我们在.Net/C#/Selenium中开发了一组selenium回归测试。这些测试在本地运行良好,直到最近BST启动,它们在我们的Azure管道中也运行良好。自从BST以来,一小部分使用时间和日期的测试只在Azure中失败。
问题是测试站点在英国,但Azure系统不在,所以我们需要让Chrome认为它仍然在英国。下面是设置我们的chromedriver的代码。
protected static IWebDriver? _driver = null;
var options = new ChromeOptions();
options.AddArgument("enable-automation");
options.AddArgument("disable-dev-shm-usage");
options.AddArgument("ignore-certificate-errors");
options.AddArgument("ignore-ssl-errors");
options.AddArgument("disable-popup-blocking");
options.AddArgument("lang=en");
options.AddArgument("window-size=1920,1080");
if (!System.Diagnostics.Debugger.IsAttached)
{
_isDebug = false;
options.AddArgument("headless");
}
options.AddArgument("disable-gpu");
options.AddUserProfilePreference("download.default_directory", _downloadPath);
options.AddUserProfilePreference("profile.default_content_setting_values.automatic_downloads", 1);
options.AddUserProfilePreference("plugins.always_open_pdf_externally", true);
options.AddUserProfilePreference("download.prompt_for_download", false);
options.AddUserProfilePreference("download.directory_upgrade", true);
ChromeDriverService serviceObj = ChromeDriverService.CreateDefaultService();
_driver = new ChromeDriver(serviceObj, options, TimeSpan.FromSeconds(_maxWait));
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(_maxWait);
_driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(_maxWait);
_driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(_maxWait);
_driver.Manage().Cookies.DeleteAllCookies();
_driver.Manage().Window.Maximize();
现在我相信IDevTools是必需的,但我似乎找不到一个可行的例子。有人能帮忙吗?
我基本上在寻找的是这样做的方式在每个功能的开始,使浏览器将使用伦敦x1c 0d1x
到目前为止我发现
var devTools = _driver as IDevTools;
var session = devTools.GetDevToolsSession();
但不知道接下来会发生什么
先谢谢你了
凯夫
1条答案
按热度按时间ukxgm1gy1#
这似乎是解决方案,在Azure中的测试运行正在通过