该代码仅运行一种方法,而不运行第二种或第三种方法

时间:2018-12-30 17:49:25

标签: c# selenium selenium-webdriver selenium-chromedriver

我正在编写一个脚本来自动化网站,并且我希望多次登录,以便所有帐户工作都同时完成,但该程序仅运行第一种方法。我正在控制台应用程序中使用硒,但是存在一些问题。

我尝试搜索它。

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();
    }
}
}

我只希望这两种方法都能工作。没有错误,但仅运行第一种方法。

1 个答案:

答案 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()方法吗?