我正在制作一个脚本,从网站上抓取一些数据。但是我的网络无限期地挂起,VS 根本没有抛出任何错误或结束测试。它永远挂着。我不知道代码的哪一部分导致了挂起,我很困惑。
这是代码:
public void scrapping() {
WebDriverWait wait1 = new WebDriverWait(driver, TimeSpan.FromSeconds(15));
for (int i = 0; i < currentPage; i++)
{
try
{
IWebElement chkbox = wait1.Until(ExpectedConditions.ElementIsVisible(By.Id("checkboxCol")));
chkbox.Click();
IWebElement next = wait1.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id=\"searchResults\"]/div[1]/div/div[1]/div[2]/div[3]")));
next.Click();
wait1.Until(ExpectedConditions.StalenessOf(next));
wait1.Until(ExpectedConditions.StalenessOf(chkbox));
}
catch
{
Console.WriteLine("Captcha Detected");
while (true)
{
Thread.Sleep(10000);
//Captcha(); // Empty function
}
}
}
我尝试调整 wait1 的时间,而不是 Element Visible,我尝试了不同的时间。无处可去。
正如其他人在评论中提到的,听起来您需要在 Visual Studio 中进行良好、诚实的调试会话。逐行检查代码,直到找到问题为止。话虽这么说,我猜这是你的无限循环
catch
:
while (true)
{
// true is always true, even if you sleep, so this never exits.
}
我敢打赌代码会抛出异常,然后陷入无限循环。