我想从https://zakup.sk.kz抓取一些数据。
首先,我初始化浏览器:
(*p).
之后,我单击框架:
IWebDriver browser = new ChromeDriver();
browser.Navigate().GoToUrl("https://zakup.sk.kz/#/ext?tabs=lot&adst=PUBLISHED&lst=PUBLISHED&page=1");
在此框架中,存在我要剪贴的数据(我找到了绝对路径):
IWebElement click = browser.FindElement(By.ClassName("m-found-item__num"));
click.Click();
在此之后,我需要切换到具有相同结构的下一帧,并废弃数据:
IWebElement tru = browser.FindElement(By.XPath("/html[1]/body[1]/ngb-modal-window[1]/div[1]/div[1]/sk-main-dialog[1]/div[2]/div[6]/div[1]/div[1]/div[7]"));
Console.WriteLine(tru.Text);
但是Selenium找不到tru2,我不知道为什么,因为每个帧都有相同的结构?请告诉我,我该怎么办?
答案 0 :(得分:0)
当您单击next
箭头时,当前元素将在Ajax请求完成后删除并添加,此处您需要WebDriverWait
IWebElement next = browser.FindElement(By.XPath("//div[contains(@class, 'm-modal__arrow')]"));
next.Click();
// wait max 15 seconds
IWait wait = new WebDriverWait(browser, TimeSpan.FromSeconds(15))
IWebElement tru2 = wait.Until(browser => browser.FindElement(By.XPath("(//div[@class="m-infoblock__layout"])[7]")));
Console.WriteLine(tru2.Text);
请注意,我使用Xpath
(//div[@class="m-infoblock__layout"])[7]