我已将以下框架用于 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();
谢谢你的想法。