我在网页上有一个表格,其中有许多重复的值,如下所示:
Description App Name Information
Some Desc1 App1 Some Info
Some Desc2 App2 Some Info
Some Desc3 App2 Some Info
Some Desc4 App3 Some Info
Some Desc5 App4 Some Info
在我的应用程序开始时,它会要求用户输入他们选择的应用程序名称。我想要的是如果我选择 APP2 它应该首先选择“Some Desc2”,这将导致另一个页面,我会在那里做一些事情。然后它应该再次回到上一页,这一次它应该选择“Some Desc3”,这将导致另一个页面。这应该重复 n 次,直到 selenium 找不到指定的 appname。
我试过如下所示:
//Finding Table, its rows and coloumns
int rowcount = driver.FindElements(By.Id("someid")).Count;
for (int i = 0; i < rowcount; i++)
{
//Finding App name based on user entered text
var elems = driver.FindElements(By.PartialLinkText(text));
IList<IWebElement> list = elems;
for (int j = 0; j < list.Count; j++)
{
var table = driver.FindElement(By.Id("someid"));
IList<IWebElement> rows = table.FindElements(By.TagName("tr"));
IList<IWebElement> cells = rows[i].FindElements(By.TagName("td"));
//Again finding element based on user entered text
var elem = driver.FindElements(By.PartialLinkText(text));
list = elem;
if (list[1].Text.Equals(text))
{
list[0].Click();
string duration;
string price;
var elements = driver.FindElements(By.Id("SPFieldNumber"));
IList<IWebElement> lists = elements;
duration = lists.First().Text.ToString();
price = lists.ElementAt(1).Text.ToString();
MessageBox.Show(duration);
MessageBox.Show(price);
driver.Navigate().Back();
}
}
}
运行此代码可以正确选择“Some Desc2”,一切正常。但是在返回上一页后,c# 会抛出异常“在缓存中找不到元素 - 可能页面在查找 selenium 后已更改”。