Я использую Selenium с хромированной решеткой, чтобы сделать довольно простой экранный скребок, но поскольку я петлю и жду элементов, а затем нажимаю ссылки - процесс становится настолько медленным это непригодно. Если я удалю экземпляр хромодровера и новый экземпляр другого, все снова начнется быстро.Selenium ChromeDriver постепенно уменьшается медленнее в течение короткого периода времени
Почему это происходит так быстро? Что я могу сделать, чтобы ускорить это?
Псевдо C# код:
while(true)
{
var dataGridRows = browser.Driver.FindElements(By.XPath(".//*[@class='datadrid-row']"));
foreach (var dataGridRow in dataGridRows)
{
OpenQA.Selenium.Interactions.Actions act = new OpenQA.Selenium.Interactions.Actions(browser.Driver);
//Double click on the grid row. A new dialog (CSS style) will show up.
act.DoubleClick(dataGridRow).Build().Perform();
// This first time I double click the grid row, the dialog pops up within a few miliseconds.
// This gets incrementally slower, about 10 iterations later the popup will take several MINUTES to show up after the double-click.
//This line waits for a "close dialog" button to appear. This is where the delay occurs but this returns as soon as the dialog actually appears.
ReadOnlyCollection<IWebElement> closeButtons = browser.Driver.FindElements(By.XPath(".//*[@class='dilog-close-button']"));
CollectScreenScrapeInformation(...);
}
Sleep(1000 * 60);
}
Линия 'closeButtons' не ждет ничего. Он просто царапает страницу для кнопки закрытия диалогового окна XPath. Я предполагаю, что вы устанавливаете неявное ожидание где-то, что вызывает проблему. Кроме того, вы смешиваете неявные и явные ожидания? Документы говорят, что не делайте этого, потому что это может вызвать непредсказуемое время ожидания. – JeffC
Вы пробовали этот сценарий вручную? Возможно, это сайт. Вы пробовали FF или другой драйвер браузера? Это ведет себя по-другому? – JeffC