好的,我可能对此想得太过分了,但我很茫然。一旦添加功能完成,我将使网页自动化并验证我添加到列表中的某些条目实际上存在于列表中。我的问题是,在添加我自己的条目之前(并且并不需要),我不知道列表的内容,因此在添加我的条目之后,它们可能会或可能不会出现在列表的第一页上。我当时打算寻找是否存在滚动箭头,以确定是否需要继续查找项目,但是我在循环和何时检查时遇到了麻烦。
现在我有这个:
List<string> addedTestNames = new List<string>();
do
{
IList<IWebElement> displayedTests = cycle.ReturnListOfTestsWithinCycle();
for (int i = 0; i < cycle.ReturnListOfTestsWithinCycle().Count; i++)
{
addedTestNames.Add(displayedTests[i].Text);
}
} while (helper.DoesElementExist(driver, cycle.getScrollForwardArrowInResults()));
我的while
条件正在寻找滚动箭头,如果有,我将再次执行操作。如果没有,我将停止并继续我的其余测试。我的问题是,如果箭头在那里,我需要单击它以转到结果的下一页。我不知道该采取什么行动。我不能将其作为第一个条件,因为如果它存在,我不想在添加结果的第一页之前先单击它,并且在添加结果的第一页之后我也不能真正将其放置,因为这可能会改变我的答案while条件(一旦您进入“最后一个”页面,箭头就会消失)。我真正想做的是一次完成所有操作,查找箭头是否存在,如果存在,请单击它,然后再次执行do
操作。
是的,我是所有这一切的新手。
答案 0 :(得分:1)
您拥有大多数勇气,只需要移动一件事并添加一个布尔值标志即可知道何时完成。
List<string> addedTestNames = new List<string>();
bool done = false;
do
{
// MORE OPTIMIZED - OPTION 1
addedTestNames.AddRange(cycle.ReturnListOfTestsWithinCycle().Select(e => e.Text).ToList());
// LESS OPTIMIZED - OPTION 2
//IList<IWebElement> displayedTests = cycle.ReturnListOfTestsWithinCycle();
//for (int i = 0; i < displayedTests.Count; i++)
//{
// addedTestNames.Add(displayedTests[i].Text);
//}
if (helper.DoesElementExist(driver, cycle.getScrollForwardArrowInResults()))
{
// click Next
}
else
{
done = true;
}
} while (!done);