如何简化 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, '_');
}
...
}
我收到一个错误
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, '_');
}
...
}