Sam*_*des 0 c# selenium selenium-webdriver
我想测试表中名字列的排序是否正常。该表由3列组成:“名字”,“姓氏”和“电子邮件”。这是
名字列的样子:名字列
列
我可以在表中获取所有“名字”值,并在控制台中查看所有这些值。
我的问题是如何将该值存储在列表中并对其进行排序,然后将它们与表值进行比较。
这是代码:
int numOfClicks = Int32.Parse(driver.FindElement(By.XPath(".//*[@id='injectview']/div/div/div/table[2]/tbody/tr/td[1]/ul/li[8]/a")).Text);
Console.WriteLine(numOfClicks);
driver.FindElement(By.XPath(".//*[@id='injectview']/div/div/div/table[2]/tbody/tr/td[1]/ul/li[1]/a")).Click();
Thread.Sleep(2000);
for (int i = 1; i <= numOfClicks; i++)
{
IList<IWebElement> records_in_page = driver.FindElements(By.XPath(".//*[@id='injectview']/div/div/div/table[1]/tbody/tr/td[1]"));
for (int j = 1; j <= records_in_page.Count; j++)
{
string firstName = driver.FindElement(By.XPath(".//*[@id='injectview']/div/div/div/table[1]/tbody[" + (j + 1) + "]/tr/td[1]")).Text;
Console.WriteLine(firstName);
}
driver.FindElement(By.CssSelector("#injectview > div > div > div > table:nth-child(3) > tbody > tr > td:nth-child(1) > ul > li.pagination-next.ng-scope > a")).Click();
}
Run Code Online (Sandbox Code Playgroud)
剩下的代码只是导航到页面,我只是发送了获取列值的部分。
谢谢您的帮助。
小智 6
您必须将您的名字保存在列表中,然后进行比较。如果您使用Id / Class名称作为名字,则可以使用更好的方法获得所有名字
List<string> fromTable = new List<string>();
for (int j = 1; j <= records_in_page.Count; j++)
{
string firstName = driver.FindElement(By.XPath(".//*
[@id = 'injectview'] / div / div / div / table[1] / tbody[" + (j + 1) +
"]/tr/td[1]")).Text
fromTable.Add(firstName)
}
public bool Comparer(List<string> fromTabel, List<string> fromDb)
{
bool equals = false;
if(fromDb.Count().Equals(fromTabel.Count()))
{
foreach (var name in fromDb)
{
equals = fromTabel.Any(n => n == name);
if(equals == false)
return equals;
}
return equals;
}
}
Run Code Online (Sandbox Code Playgroud)