Код работает только один метод, а не второй или третий - PullRequest
0 голосов
/ 30 декабря 2018

Я пишу сценарий для автоматизации веб-сайта, и мне нужно несколько входов в систему, чтобы все учетные записи выполнялись одновременно, но программа запускается только первым методом.Я использую селен в консольном приложении, оно работает, но есть некоторая проблема.

Я попытался найти его.

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 голосов
/ 30 декабря 2018

Вы можете использовать Parallel.Invoke(Action[])

Что-то вроде:

Parallel.Invoke(unitTest1.method1(), unitTest1.method2())

Теперь method1 и method2 должны выполняться параллельно, примерно в одно и то же время.

Причиной, по которой кажется, что method2 никогда не выполняется, может быть thread.sleep(40000) в method1 в цикле for.Method2 должен ждать 40 * 100 = 4000 секунд для завершения method1.Вы уверены, что вам нужны эти методы thread.sleep ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...