使用多个色度依次下载使用硒元素的图像



这是我的代码,试图从每个chrome、依次下载10个图像

我需要从每个chrome窗口依次下载10个图像,例如第一个chrome将从1-10下载,第二个从11-20下载,这样第十个chrome可以从91-100依次下载。

private void button1_Click(object sender, EventArgs e)
{

var b = 0;

for (int a = 0; a < 10; a++)
{
//var chromeOptions = new ChromeOptions();
//chromeOptions.AddArguments("--headless");
var driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://images.google.com/?gws_rd=ssl");
IWebElement element = driver.FindElement(By.Name("q"));
element.SendKeys("elon musk jpeg");
element.Submit(); 
var i = 0;

IList<IWebElement> Imghref = driver.FindElements(By.ClassName("rg_i"));

foreach (IWebElement eachLink in Imghref)
{
eachLink.Click();
i++;
b++;
IWebElement Image = driver.FindElement(By.ClassName("v4dQwb"));

IWebElement img = Image.FindElement(By.ClassName("n3VNCb"));

String base64String = img.GetAttribute("src");
string ImageName = img.GetAttribute("alt");
Console.WriteLine("Image URL : " + base64String);
String converted = base64String.Replace("data:image/jpeg;base64,", string.Empty);
byte[] bytes = Convert.FromBase64String(converted);
File.WriteAllBytes("D:\VisualStudio Workspace\task\images\image" + b + ".jpg", bytes);
if (i == 10)
{
break;
}
}
}

}

问题是,我如何使用foreach循环变量从之前下载的最后一个chrome使用的图像继续?

您可以使用nunit测试用例实现您想要的目标

其概念是,您可以并行运行类中的所有测试,并定义输入和输出边界。例如:(不只是复制大部分代码(

[TestCase(0, 9)]
[TestCase(10, 19)]
[TestCase(20, 29)]
//...etc...
[TestCase(90, 99)]
public void yourClass(int start, int end)
{
//potentially 2 lines to change:
//for i, use your requested starting point
var i = start;

//end when you reach the end:
if (i == end)
{
break;
}
}

关于如何在这里并行运行这些测试用例的信息

免责声明-我还没有机会运行这个-目的是指导您采取方法


更新

我试着用一个简单的书写行。

using NUnit.Framework;
using System;
using System.Threading;
[assembly: LevelOfParallelism(3)]
namespace StackTests
{
[TestFixture]
public class ParallelTest
{
[Parallelizable(ParallelScope.All)]
[Test]
[TestCase(0,9)]
[TestCase(10, 19)]
[TestCase(20, 29)]
public void Run(int Start, int end)
{
for(int i =Start; i <= end; i++)
{
Console.WriteLine(i + " -> "+ DateTime.Now);
Thread.Sleep(1000);
}
}
}
}

输出此(注意时间相同(

NUnit Adapter 4.0.0.0: Test execution started
NUnit3TestExecutor discovered 3 of 3 NUnit test cases using Current Discovery mode, Non-Explicit run
10 -> 14/07/2021 16:31:57
11 -> 14/07/2021 16:31:58
12 -> 14/07/2021 16:31:59
13 -> 14/07/2021 16:32:00
14 -> 14/07/2021 16:32:01
15 -> 14/07/2021 16:32:02
16 -> 14/07/2021 16:32:03
17 -> 14/07/2021 16:32:04
18 -> 14/07/2021 16:32:05
19 -> 14/07/2021 16:32:06
20 -> 14/07/2021 16:31:57
21 -> 14/07/2021 16:31:58
22 -> 14/07/2021 16:31:59
23 -> 14/07/2021 16:32:00
24 -> 14/07/2021 16:32:01
25 -> 14/07/2021 16:32:02
26 -> 14/07/2021 16:32:03
27 -> 14/07/2021 16:32:04
28 -> 14/07/2021 16:32:05
29 -> 14/07/2021 16:32:06
0 -> 14/07/2021 16:31:57
1 -> 14/07/2021 16:31:58
2 -> 14/07/2021 16:31:59
3 -> 14/07/2021 16:32:00
4 -> 14/07/2021 16:32:01
5 -> 14/07/2021 16:32:02
6 -> 14/07/2021 16:32:03
7 -> 14/07/2021 16:32:04
8 -> 14/07/2021 16:32:05
9 -> 14/07/2021 16:32:06

相关内容

  • 没有找到相关文章

最新更新