EdgeDriver - невозможно изменить размер окна в Edge
Я использую EdgeDriver для запуска тестов автоматизации в моем браузере (Edge 38.14393.0.0). Мои тесты в C#, поэтому я использую драйвер.NET:
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Edge;
var options = new EdgeOptions();
options.PageLoadStrategy = EdgePageLoadStrategy.Normal;
RemoteWebDriver driver = return new EdgeDriver(Environment.CurrentDirectory, options, TimeSpan.FromSeconds(60));
driver.SetDocumentSize(new Size(800, 600)); // HERE!
Ошибка
Этот код я запускаю в начале теста. И это не удается в последней строке с:
Метод инициализации класса
Web.TestSuite.UIRendering.RenderingTestSuiteEdge.TestClassInitialize
бросил исключение.System.InvalidOperationException
:System.InvalidOperationException
: Операция с размером окна не удалась, потому что окно в данный момент недоступно.
С помощью этой трассировки стека:
OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs: line 1126
OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs: line 920
OpenQA.Selenium.Remote.RemoteWindow.set_Size(Size value) in ...
К сведению, у меня есть другие тесты, работающие на Chrome и IE11 с использованием их соответствующих драйверов. Когда я звоню SetDocumentSize
на тех я не получаю ошибок.
Открытые вопросы
Я мог бы найти некоторые открытые вопросы, связанные с этой проблемой:
- https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9340417/
- https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8778306/
Вопросы
Итак, это мои вопросы:
- Кому-нибудь удалось установить размер окна в Edge?
- Эта проблема, я поражаю известную проблему? Если так, это исправлено? Упомянутые проблемы (которые выглядят похожими) по-прежнему открыты и не имеют статуса.
- Есть ли обходной путь?
3 ответа
Попробуйте один из них для C#:
driver.Manage().Window.Size = new Size(1920, 1080);
driver.Manage().Window.Maximize();
Хотя я сталкиваюсь с этой ошибкой по другой причине (например, здесь -> https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10319887/).
Теперь я убиваю весь процесс driver & edge перед каждым тестом, так что, надеюсь, он будет решен так:
try
{
foreach (var process in Process.GetProcessesByName("MicrosoftWebDriver"))
{
process.Kill();
}
foreach (var process in Process.GetProcessesByName("MicrosoftEdge"))
{
process.Kill();
}
}
catch (Exception)
{
}
Кроме того, если вы запустите их на удаленном компьютере, например, через RDP, при закрытии RDP произойдет та же ошибка. Это текущий обходной путь, который я нашел для него:
Create a batch file with this code:
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)
Create a desktop shortcut to this file. To do this, right-click the batch
file and select Send to | Desktop (create shortcut).
In the shortcut properties, click Advanced and select Run as administrator.
Теперь, когда вам нужно отключиться от удаленного рабочего стола, дважды щелкните этот ярлык на удаленном компьютере (в окне удаленного рабочего стола).
Спасибо https://support.smartbear.com/testcomplete/docs/testing-with/running/via-rdp/keeping-computer-unlocked.html за скрипт.
Это работает для меня:
driver.manage().window().setSize(new Dimension(1250, 720));
Вы можете установить размер окна для Microsoft Edge, как показано ниже. *-window-size
иwindow-size
также работают:
EdgeOptions options = new EdgeOptions();
options.AddArguments("--window-size=1024,768");
EdgeDriver driver = new EdgeDriver(options);
Кроме того, вы также можете установить размер окна для Microsoft Edge с помощью приведенного ниже кода в соответствии с документом :
EdgeDriver driver = new EdgeDriver();
driver.Manage().Window.Size = new Size(1024, 768);
*Мой ответ объясняет это больше.