【问题标题】:EdgeDriver - Cannot change window size in EdgeEdgeDriver - 无法更改 Edge 中的窗口大小
【发布时间】:2016-12-27 08:41:42
【问题描述】:

我正在使用 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 时,我没有收到任何错误。

未解决的问题

我可以找到一些与此问题相关的未解决问题:

问题

所以,这些是我的问题:

  • 有人在Edge中成功设置了窗口大小吗?
  • 我遇到的这个问题是一个已知问题吗?如果是这样,它是固定的吗?引用的问题(看起来相似)仍处于打开状态,未提供任何状态。
  • 有什么解决方法吗?

【问题讨论】:

    标签: c# selenium-webdriver webdriver microsoft-edge selenium-edgedriver


    【解决方案1】:

    为 C# 尝试其中一种:

    driver.Manage().Window.Size = new Size(1920, 1080);
    driver.Manage().Window.Maximize();
    

    虽然我遇到这个错误的原因不同(比如这里的那个 -> https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10319887/)。

    现在我在每次测试之前杀死驱动程序和边缘的所有进程,所以希望它会像这样解决:

    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 提供脚本。

    【讨论】:

      【解决方案2】:

      这对我有用:

      driver.manage().window().setSize(new Dimension(1250, 720));
      

      【讨论】:

      • 啊。是的,抱歉,这是针对 Java 的。
      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 2018-03-18
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      相关资源
      最近更新 更多