【发布时间】:2018-07-14 22:08:43
【问题描述】:
我目前在循环中遇到问题,基本上第一个进程在我调用时运行良好 -
代码示例:
public static void Search()
{
var Lines = File.ReadLines(@"in.txt").Take(1000).ToList();
var query = string.Join(Environment.NewLine, Lines);
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(300));
IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(By.Name("search")));
if (driver.FindElements(By.Name("search")).Count != 0)
{
driver.FindElement(By.Name("search")).SendKeys(query);
System.Threading.Thread.Sleep(2000);
driver.FindElement(By.Name("submitbtn")).Click();
System.Threading.Thread.Sleep(2000);
Console.WriteLine("Getting Results");
if (driver.FindElements(By.CssSelector("tbody")).Count != 0)
{
Results();
}
}
}
public static void Results()
{
try
{
WebDriverWait wait1 = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
IWebElement element1 = wait1.Until(ExpectedConditions.ElementToBeClickable(By.TagName("result")));
if (driver.FindElements(By.TagName("result")).Count != 0)
{
var element2 = driver.FindElements(By.CssSelector("text"));
foreach (var text in element2)
{
var data = text.GetAttribute("outerHTML");
System.IO.File.AppendAllText("output.txt", data + Environment.NewLine);
}
driver.Navigate().Refresh();
Search();
}
else
{
Console.WriteLine("No results");
driver.Navigate().Refresh();
Search();
}
}
catch
{
Console.WriteLine("Failed to get results");
driver.Close();
Load();
}
}
但是在返回Search()
第二次尝试,在结果中调用
Search();
成功处理Results();后
在第二次搜索过程中,Results() 捕获异常抛出,即
Failed to get results
但是,Results() 函数不在处理中,但是如何再次调用 Search() 以进行第二次尝试并退出 Results()?
【问题讨论】: