-1

次のように多くの値が繰り返されるWebページ上のテーブルがあります。

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 回繰り返す必要があります。

私は以下のように試しました:

//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# は「要素がキャッシュに見つかりません - セレンが検索されてからページが変更された可能性があります」という例外をスローします。

4

1 に答える 1