这是我的第一个 stackoverflow 问题。我已经在这个网站上搜索了一些答案,但是我发现的所有解决方案都对我不起作用,或者它们适用于 Java 或 javascript。
情况
作为一名初级自动化测试人员,我使用 Selenium Webdriver 和 Protractor.Net 在 C# 中创建了一种自动化测试框架。该框架由两部分组成。
页面对象
测试
还有一个页面对象基类。在这个类中,我定义了每个页面对象使用的方法,例如打开特定程序模块的方法。在测试中,还有一个基类。在此类中定义了测试属性(C# UnitTest),例如 TestInitialize、TestCleanup、AssemblyCleanup。
在 Test Base 类中我还定义了 NgWebDriver、ChromeDriver:
driver = new NgWebDriver(new OpenQA.Selenium.Chrome.ChromeDriver());
driver.Manage().Window.Maximize();
在 Page Object Base 类中,我定义了一个打开网站特定部分的方法:
public void OpenSPA(string spa)
{
driver.Navigate().GoToUrl(spa, true);
driver.Navigate().Refresh();
}
参数 spa 包含要导航到的 url。
测试用例
测试用例很简单:网站模块 x 的打开模块 x 只是一个 url
测试用例的完整代码:
[TestMethod]
[TestCategory(cat), TestCategory(regression)]
public void Organisatie_CheckActief()
{
bool is_actief;
var organisatie = new CrmSPA(driver);
organisatie.VulVeld("Vrij zoeken", "XXXX");
is_actief = organisatie.IsRelatieActief();
//Assertion
Assert.IsTrue(is_actief == true, "Relatie is niet actief.");
问题: 从几周前开始,我在运行测试用例时收到以下错误:
Test Name: Organisatie_CheckActief
Test FullName: FirstTest.Webdrivers.WijzigenOrganisatie_Basis.Organisatie_CheckActief
Test Source: C:\Users\XXXX\TestCases\\Organisatie\WijzigenOrganisatie_basis.cs : line 168
Test Outcome: Failed
Test Duration: 0:00:41,1353784
结果堆栈跟踪:
bij OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
bij OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
bij OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScriptCommand(String script, String commandName, Object[] args)
bij OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteAsyncScript(String script, Object[] args)
bij Protractor.NgWebDriver.set_Url(String value) in c:\Users\Bruno\Projets\GitHub\bbaia\protractor-net\src\Protractor\NgWebDriver.cs:regel 163
--- End of inner exception stack trace ---
bij Protractor.NgWebDriver.set_Url(String value) in c:\Users\Bruno\Projets\GitHub\bbaia\protractor-net\src\Protractor\NgWebDriver.cs:regel 193
bij Protractor.NgNavigation.GoToUrl(String url, Boolean ensureAngularApp) in c:\Users\Bruno\Projets\GitHub\bbaia\protractor-net\src\Protractor\NgNavigation.cs:regel 112
bij FirstTest.PageObjects.BaseSPA.OpenSPA(String spa) in C:\Users\\Documents\Visual Studio 2015\Projects\\\FirstTest\PageObjects\BaseSPA.cs:regel 55
bij FirstTest.PageObjects.CrmSPA.CrmSPA..ctor(NgWebDriver driver) in C:\Users\\Documents\Visual Studio 2015\Projects\\\FirstTest\PageObjects\CRM\CrmSPA\CrmSPA.cs:regel 37
bij FirstTest.Webdrivers.WijzigenOrganisatie_Basis.Organisatie_CheckActief() in C:\Users\\Documents\Visual Studio 2015\Projects\\\FirstTest\TestCases\RelatieSPA\Organisatie\WijzigenOrganisatie_basis.cs:regel 174
Result Message:
Test method FirstTest.Webdrivers.WijzigenOrganisatie_Basis.Organisatie_CheckActief threw exception:
System.InvalidOperationException: **Angular could not be found on the page** 'https://XXXXX/CRM/Relaties/ ---> OpenQA.Selenium.WebDriverTimeoutException: asynchronous script timeout: result was not received in 30 seconds
(Session info: chrome=66.0.3359.139)
(Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 6.1.7601 SP1 x86_64)
屏幕/浏览器上的结果
运行测试时会发生以下情况:
chrome 浏览器启动(确定)
chrome浏览器打开最大化(好的)
chrome 浏览器获取 url (ok)
浏览器为空显示空白页(NOK)
不知何故,我发现了以下错误:angular never提供resumeBootstrap
我在 google 和 stackoverflow 上进行了搜索,并尝试了一些答案,例如同步选项: driver.IgnoreSynchronization 问题并不总是出现。有时页面已加载并继续测试。我已经尝试重新安装 protractor-net、更新的 chromedriver 和 seleniumdriver。问题依然存在。
如果有人可以帮助我解决这个问题。