如何简化 href 属性,这样我就不会得到 "the given paths format is not supported"?

How to simplify href attribute so I don't get "the given paths format is not supported"?

我收到一个错误

the given paths format is not supported

但是当我使用 driver.Title 而不是 links[i] 时它工作正常,只是有太多相同的标题,因此对我来说最好使用 href,但我想你不能在文件名中使用“:”或“/”,那么如何简化 href,这样我就不会得到 "not supported path" 错误?

int linkCount = driver.FindElements(By.CssSelector("a[href]")).Count;
string[] links = new string[linkCount];      

List<IWebElement> linksToClick = driver.FindElements(By.CssSelector("a[href]")).ToList();

for (int i = 0; i < linkCount; i++)
{
    links[i] = linksToClick[i].GetAttribute("href");
} 

for (int i = 0; i < linkCount; i++)
{
    driver.Navigate().GoToUrl(links[i]);
    ITakesScreenshot screenshotDriver = driver as ITakesScreenshot;
    Screenshot screenCapture = screenshotDriver.GetScreenshot();
    screenCapture.SaveAsFile(Path.Combine(testPath, links[i] +"_"+ testScreenshotTitle),
    System.Drawing.Imaging.ImageFormat.Png);
}

如果目标是获取页面上除特定链接之外的链接列表,也许这会更好

using System.Link;

var blackList = {"LogOff", ...};
var links = driver
  .FindElements(By.CssSelector("a[href]"))
  .Select(a => a.GetAttribute("href"))
  .Where(u => !blackList.Any(s => s.Contains(u)));
foreach (string link in links)
{
  ...
}

更新

因此要清理文件名

foreach (string link in links)
{
  var fileName = Path.Combine(testPath, link + "_" + testScreenshotTitle;
  foreach (char c in Path.GetInvalidFileNameChars())
  {
    fileName = fileName.Replace(c, '_');
  }
  ...
}