0
テーブルから表示できる要素からページ数を取得します。次に、現在のページ要素が最後のページを読み取るまで、次のボタンをクリックするループを作成します。Selenium forループが原因で "要素がページドキュメントに添付されていません"
問題は、次のボタンをクリックするたびにセレンが読み込まれた新しい要素を参照していることを認識できません。私はすべてを試しました。
string NumberOfPages = driver.FindElement(By.XPath("//*[@id=\"maxCA\"]")).Text;
for (int i=0; i< Int32.Parse(NumberOfPages); i++)
{
driver.FindElement(By.XPath("//*[@id=\"BID_WINDOW_CONTAINER\"]/div[4]/div[3]/span[3]")).Click();
WebDriverWait wait2 = new WebDriverWait(driver, System.TimeSpan.FromSeconds(3));
var ready2 = wait.Until(ExpectedConditions.ElementExists(By.CssSelector(".AUCTION_ITEM")));
Head_W = driver.FindElement(By.CssSelector(".Head_C"));
ScrapeProperties(Head_W);
}
私は何が起こっているのか知っています。私は、以前の要素ではなく作成された新しい要素を参照していることをSeleniumに認識させる方法についてはわかりません。私のループでは、ルート文書から始めているので、代わりに新しい要素を取り込むことができます。エラーは、私が何かをするとScrapeProperties(Head_W);
で起こります。
IList<IWebElement> AuctionItems = Head_W.FindElements(By.CssSelector(".AUCTION_ITEM")).ToList();
//In a loop I do this;
property.AuctionStatus = AuctionItemElement.FindElement(By.CssSelector("div.AUCTION_STATS > div.ASTAT_MSGB.Astat_DATA")).Text;
[PageFactoryでStaleElementReference例外](https://stackoverflow.com/questions/44838538/staleelementreference-exception-in-pagefactory) – DebanjanB
の可能性のある重複したページの変更は、次のボタンをクリックした後、発見しようページ上の何かが以前とは異なるものになり、待っている間に何らかの古い要素の例外を確実に捕捉しながら、実際に要素が実際のものと異なっているかどうかを確認するカスタム待機を作成します。 – mrfreester