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# selenium等待直到方法返回true_C#_Selenium_Selenium Webdriver - Fatal编程技术网

C# selenium等待直到方法返回true

C# selenium等待直到方法返回true,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我知道selenium webdriver可以做到这一点: var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("someclass"))); 我不能用我的方法吗?例如,我有一个方法,它拍摄一个屏幕截图并与另一张图片进行比较。我想等到该方法返回true 所以我有这个密码 while

我知道selenium webdriver可以做到这一点:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.ClassName("someclass")));
我不能用我的方法吗?例如,我有一个方法,它拍摄一个屏幕截图并与另一张图片进行比较。我想等到该方法返回true

所以我有这个密码

while (WelcomeScreen(driver) != true)
{
    Thread.Sleep(1000);   
}

我找不到更好的解决方案吗?

您可以使用FluentWait,我不擅长C,所以下面的代码示例是Java。如果你能把它转换成C#,我想可能会有用

 Wait wait = new FluentWait<WebDriver>(driver)
        .withTimeout(30, TimeUnit.SECONDS)
        .pollingEvery(5, TimeUnit.SECONDS)
        .ignoring(NoSuchElementException.class);

 wait.until(new Function<WebDriver, Boolean>() {
                public Boolean apply(WebDriver driver) {
                    return WelcomeScreen(driver)
                }
              }
 );
Wait Wait=new FluentWait(驱动程序)
.带超时(30,时间单位。秒)
.轮询间隔(5,时间单位。秒)
.忽略(NoSuchElementException.class);
wait.until(新函数(){
公共布尔应用(WebDriver驱动程序){
返回屏幕(驾驶员)
}
}
);

您可以使用FluentWait,我对C语言不太在行,所以下面的代码示例是用Java编写的。如果你能把它转换成C#,我想可能会有用

 Wait wait = new FluentWait<WebDriver>(driver)
        .withTimeout(30, TimeUnit.SECONDS)
        .pollingEvery(5, TimeUnit.SECONDS)
        .ignoring(NoSuchElementException.class);

 wait.until(new Function<WebDriver, Boolean>() {
                public Boolean apply(WebDriver driver) {
                    return WelcomeScreen(driver)
                }
              }
 );
Wait Wait=new FluentWait(驱动程序)
.带超时(30,时间单位。秒)
.轮询间隔(5,时间单位。秒)
.忽略(NoSuchElementException.class);
wait.until(新函数(){
公共布尔应用(WebDriver驱动程序){
返回屏幕(驾驶员)
}
}
);

谢谢您的回答。c#中的等价代码是:wait.Until((x)=>{if(WelcomeScreen(driver))返回true;返回false;});是否可以传递该方法(在本例中为
publicbooleanapply(WebDriver-driver){returnwelcomescreen(driver)}
作为一个参数?@HappyBird传递该方法是什么意思,它返回由
WelcomeScreen
方法返回的值。您发布的代码,我喜欢这样。我想把它放在一个方法“WaitUntilTrue”中,对于这个方法,我想传递“WelcomeScreen(driver)”。我想我已经通过使用动作委托找到了答案()感谢您的回答。c#中的等效代码是:wait.Until((x)=>{if(WelcomeScreen(driver))返回true;返回false;});是否可以传递该方法(在这种情况下
public Boolean apply(WebDriver driver){return WelcomeScreen(驱动程序)}
作为参数?@HappyBird传递方法是什么意思,它返回由
WelcomeScreen
方法返回的值。您发布的代码,我喜欢。我想把它放在一个方法“WaitUntilTrue”中,对于这个方法,我想传递“WelcomeScreen(驱动程序)”.我想我已经通过使用Action delegate()找到了答案