如何解决C#->旧元素参考:切换页面时无法继续在forloop中定位
我当前正在处理我正在处理的应用程序的问题。 工具:Selenium,Visual Studio,C#,PageObjecFactory,PageObjectModel
测试摘要: 我有一个通过电子邮件地址搜索的应用程序: 搜索完成后,将填充包含来宾姓名的“卡片”。 我发现的问题是某些卡与电子邮件地址相关联,但名称不匹配。 基本上,您必须单击“卡片”以转到“详细信息”页面,并验证您搜索的人是否与该卡片相关联。
为此,我构建了一个for循环,该循环遍历“卡片” 如果卡上的名称与我要查找的文本不匹配,则单击“卡”,该卡导航到“详细信息”页面,然后找到名称(作为关联方)。我遇到的问题是,当我使用所有卡回到原始页面时,我不会继续进行for循环。
我不确定(在for循环中)是否有可能导航到其他页面,验证信息,然后导航回原始页面,然后继续在forloop中离开的地方继续前进。
页面模型
class LightHousePage
{
private IWebDriver driver;
public LightHousePage(IWebDriver driver)
{
this.driver = driver;
PageFactory.InitElements(driver,this);
}
[FindsBy(How = How.Id,Using = "search_input")]
[CacheLookup]
private IWebElement SearchBorrowers { get; set; }
[FindsBy(How = How.ClassName,Using = "task-info-section")]
[CacheLookup]
private IWebElement taskCard { get; set; }
//CoBorrower Icon
[FindsBy(How = How.ClassName,Using = "cls-2borrowercoborrower")]
[CacheLookup]
private IWebElement coBorrower { get; set; }
//CoBorrower Name
[FindsBy(How = How.XPath,Using = "//*[@id='mat-tab-content-0-0']/div/div/app-borrower-info/div/div/div[1]/div[1]/span[2]")]
[CacheLookup]
private IWebElement coBorrowerFullName { get; set; }
//Opportunity View Return to Main Tasks back button
[FindsBy(How = How.ClassName,Using = "back-button")]
[CacheLookup]
private IWebElement returnToMainTasks { get; set; }
/// <summary>
/// Utilze the search bar on the LIght house page
/// </summary>
/// <returns>The LoginPage class instance.</returns>
public LightHousePage searchInput (string searchText)
{
new webdriverwait(driver,TimeSpan.FromSeconds(3)).Until(ExpectedConditions.ElementToBeClickable(SearchBorrowers));
SearchBorrowers.Click();
SearchBorrowers.SendKeys(searchText);
SearchBorrowers.SendKeys(Keys.Enter);
Thread.Sleep(3000);
return this;
}
/// <summary>
/// email search varification
/// </summary>
/// <returns>The LoginPage class instance.</returns>
public LightHousePage validateCards2(string textTovalidate)
{
List<IWebElement> tags = new List<IWebElement>(driver.FindElements(By.ClassName("task-info-section")));
for (int i = 0; i < tags.Count; i++)
{
if (!tags[i].Text.Contains(textTovalidate))
{
tags[i].Click();
Thread.Sleep(2000);
coBorrower.Click();
if (coBorrowerFullName.Text.Contains(textTovalidate))
{
returnToMainTasks.Click();
//appears to not be continuting loop prog
}
else
{
throw new Exception("LightHouse: Search Error");
}
}
}
return this;
}
}
测试课程
[TestClass]
public class LightHouseSearchByEmail : DesktopHeadlessLocalTestsBase
{
//public TestContext TestContext { get; set; }
private static IWebDriver driver;
private static NameValueCollection LighthouseUrls = ConfigurationManager.GetSection("Lighthouse/LighthouseUrls") as NameValueCollection;
private static string LighthouseUrl = LighthouseUrls.Get("LighthouseUrl");
private static readonly Logger logger = new Logger();
private readonly ExcelData excelData = new ExcelData();
[TestMethod]
public void TestMethod1()
{
driver = HeadlessDriverSetup();
driver.Navigate().GoToUrl(LighthouseUrl);
LightHousePage lp = new LightHousePage(driver);
OktaLoginPage op = new OktaLoginPage(driver);
logger.Log("Navigate to the Light House page",driver);
lp.searchInput("dummy.singer@veteransunited123.com");
lp.validateCards2("Cx.Assumption Carrie");
logger.Log("LightHouse CRM Search validation is complete",driver);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。