函数无限期挂起(Selenium Web 驱动程序,C#)

问题描述 投票:0回答:1

我正在制作一个脚本,从网站上抓取一些数据。但是我的网络无限期地挂起,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,我尝试了不同的时间。无处可去。

c# selenium-webdriver
1个回答
0
投票

正如其他人在评论中提到的,听起来您需要在 Visual Studio 中进行良好、诚实的调试会话。逐行检查代码,直到找到问题为止。话虽这么说,我猜这是你的无限循环

catch
:

while (true)
{
    // true is always true, even if you sleep, so this never exits.
}

我敢打赌代码会抛出异常,然后陷入无限循环。

© www.soinside.com 2019 - 2024. All rights reserved.