1

我已将以下框架用于 Angular 应用程序的 UI 测试,并且两个版本都运行良好。测试代码和应用程​​序源代码位于 TFS、Windows 虚拟机上。

  • 版本 1:SpecFlow、SpecFlow + SpecRun3、C# selenium web 驱动程序、页面对象模型、量角器。
  • 版本 2:Spec Flow、Nunit、C# selenium web 驱动程序、页面对象模型、量角器。

环境 : Framework="net461", Docker 2.2.0.5 (43884), Ubuntu 18.04

注意:protractor是一个 Nuget 包,用于测试 Angular 页面,它与Protractor 本身一样完美,无需使用任何显式等待。

将应用程序移动到 Linux - Docker 容器后,Protractor 停止在角度页面上定位 webelements,错误是“消息:脚本超时”。

public class HomePage 
{

    public HomePage()
    {
        PageFactory.InitElements(Driver.GetNgDriver(), this);         
    }

    [FindsBy(How = How.XPath, Using = " //button[@class='button-asd']")]
    public IWebElement HomeButton { get; set; }

}

当我在角度页面的构造函数中将驱动程序类型更改为“PageFactory.InitElements(Driver.GetDriver(), this);”时 然后它变成普通的 C# + selenium,我们必须通过使用显式等待来单独处理所有 Web 元素。在这些条件下,问题以相同的方式重复。

  • 应用程序在 Linux 上 - Docker 和测试代码在 Windows 机器上
  • 应用程序在 Linux - Docker 和测试代码在 Linux -Docker

我想像以前一样使用我的简单、清晰的代码,而无需显式等待。

pages.HomePage().HomeButton.Click();

谢谢你的想法。

4

0 回答 0