Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用可变条件逻辑创建可重用方法_C#_Selenium_Methods - Fatal编程技术网

C# 用可变条件逻辑创建可重用方法

C# 用可变条件逻辑创建可重用方法,c#,selenium,methods,C#,Selenium,Methods,在用于Selenium测试的方法中,我有以下代码的几个变体(在返回之前等待某些事件),我希望重构它并使其可重用,因此我有控制延迟和try/catch的逻辑作为通用方法,但能够根据具体情况交换条件 有没有一个简单的方法来实现这一点 代码: for(int秒=0;秒0) { 打破 } } 捕获(例外) { } 睡眠(1000); } 返回匹配的地址。计数; 似乎有点太明显了,但这行得通吗 public int GetCountOfElementsByClassName(strin

在用于Selenium测试的方法中,我有以下代码的几个变体(在返回之前等待某些事件),我希望重构它并使其可重用,因此我有控制延迟和try/catch的逻辑作为通用方法,但能够根据具体情况交换条件

有没有一个简单的方法来实现这一点

代码:

for(int秒=0;秒0)
{
打破
}
}
捕获(例外)
{
}
睡眠(1000);
}          
返回匹配的地址。计数;

似乎有点太明显了,但这行得通吗

public int GetCountOfElementsByClassName(string className)
{
    for (int second = 0; second <= 10; second++)
    {
        try
        {
            // bit that needs to vary
            matchedElements = driver.FindElements(By.ClassName(className));
            if (matchedElements.Count > 0)
            {
                break;
            }

        }
        catch (Exception)
        {
        }
        Thread.Sleep(1000);
    }          
    return matchedElements.Count;
}
public int GetCountOfElementsByClassName(字符串类名称)
{
用于(整数秒=0;秒0)
{
打破
}
}
捕获(例外)
{
}
睡眠(1000);
}          
返回匹配元素。计数;
}

您希望函数采用类似
Func
的参数—返回元素数的方法(或可枚举
Func

public int getCountofElementswitwait(函数测试)
{
.....
var count=test();
....
}

您希望恢复此操作的哪一部分?在我看来,您只是通过类名获得元素计数。您是否希望在各种类名中重复使用它?
public int GetCountOfElementsByClassName(string className)
{
    for (int second = 0; second <= 10; second++)
    {
        try
        {
            // bit that needs to vary
            matchedElements = driver.FindElements(By.ClassName(className));
            if (matchedElements.Count > 0)
            {
                break;
            }

        }
        catch (Exception)
        {
        }
        Thread.Sleep(1000);
    }          
    return matchedElements.Count;
}
public int GetCountOfElementsWithWait(Func<int> test)
{
    .....
    var count = test();
    ....
}