我正在编写一个脚本来自动化网站,并且我希望多次登录,以便所有帐户工作都同时完成,但该程序仅运行第一种方法。我正在控制台应用程序中使用硒,但是存在一些问题。
我尝试搜索它。
Main Code File:
using System;
using System.Threading;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
namespace AdsCheck
{
public class UnitTest1
{
public void TestMethod1()
{
IWebDriver driver = new ChromeDriver();
driver.Url = "http://adsjob5k.com/5k02/login.php";
driver.FindElement(By.Id("username")).SendKeys("bla");
driver.FindElement(By.Id("password")).SendKeys("bla");
driver.FindElement(By.Id("agree")).Click();
driver.FindElement(By.Id("code")).SendKeys("");
Thread.Sleep(60000);
driver.Url = "http://adsjob5k.com/5k02/viewads.php";
for (int i = 0; i <= 100; i++)
{
driver.FindElement(By.ClassName("buttonN")).Click();
Thread.Sleep(40000);
driver.Navigate().Refresh();
}
}
public void TestMethod2()
{
IWebDriver driver = new ChromeDriver();
driver.Url = "http://adsjob5k.com/5k02/login.php";
driver.FindElement(By.Id("username")).SendKeys("blabla");
driver.FindElement(By.Id("password")).SendKeys("blabla");
driver.FindElement(By.Id("agree")).Click();
driver.FindElement(By.Id("code")).SendKeys("");
Thread.Sleep(60000);
driver.Url = "http://adsjob5k.com/5k02/viewads.php";
for (int i = 0; i <= 100; i++)
{
driver.FindElement(By.ClassName("buttonN")).Click();
Thread.Sleep(40000);
driver.Navigate().Refresh();
}
}
}
}
The Driver File:
using AdsCheck;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
class Driver
{
public static void Main()
{
UnitTest1 unitTest1 = new UnitTest1();
unitTest1.TestMethod1();
unitTest1.TestMethod2();
}
}
}
我只希望这两种方法都能工作。没有错误,但仅运行第一种方法。
答案 0 :(得分:0)
您可以使用Parallel.Invoke(Action[])
类似的东西:
Parallel.Invoke(unitTest1.method1(), unitTest1.method2())
现在,method1和method2应该大致同时并行执行。
方法2似乎从未执行的原因可能是方法1的for循环中的thread.sleep(40000)
。方法2必须等待40 * 100 = 4000秒才能完成方法1。
您确定需要那些thread.sleep()方法吗?