Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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
Java 如何在C#Selenium WebDriver中等待登录cookie?_Java_C#_Selenium Webdriver - Fatal编程技术网

Java 如何在C#Selenium WebDriver中等待登录cookie?

Java 如何在C#Selenium WebDriver中等待登录cookie?,java,c#,selenium-webdriver,Java,C#,Selenium Webdriver,我以前只使用过Java,但需要在C#中设置一些测试 在登录测试中,我希望有一个等待方法等待登录cookie被设置 在Java中,我可以做类似的事情,但无法在C#中创建相同的代码,有人能帮我将此代码转换为C#吗 public void getTokenCookie(){ 试一试{ 等等( 新的ExpectedCondition(){ @凌驾 公共Cookie应用(WebDriver WebDriver){ Cookie tokenCookie=driver.manage().getCookieNa

我以前只使用过Java,但需要在C#中设置一些测试

在登录测试中,我希望有一个等待方法等待登录cookie被设置

在Java中,我可以做类似的事情,但无法在C#中创建相同的代码,有人能帮我将此代码转换为C#吗

public void getTokenCookie(){
试一试{
等等(
新的ExpectedCondition(){
@凌驾
公共Cookie应用(WebDriver WebDriver){
Cookie tokenCookie=driver.manage().getCookieNamed(“nameOfCookie”);
if(tokenCookie!=null){
System.out.println(“\n添加了“+tokenCookie”);
返回令牌cookie;
}否则{
System.out.println(“等待cookie…”);
返回null;
}
}
}
);
}捕获(例外e){
System.out.println(e.getMessage());
失败(“登录失败,未设置cookie”);
}
}
在C中#我相信上面的内容会是这样的:

public Cookie GetTokenCookie()
        {
            var webDriver = new ChromeDriver(); //or any IWebDriver

            var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(10));

            Cookie cookie = default(Cookie);

            try
            {
                cookie = wait.Until(driver =>
                {
                    Cookie tokenCookie = driver.Manage().Cookies.GetCookieNamed("nameOfCookie");
                    if (tokenCookie != null)
                    {
                        Console.WriteLine("\nToken Cookie added: " + tokenCookie);
                        return tokenCookie;
                    }
                    else
                    {
                        Console.WriteLine("waiting for cookie...");
                        return null;
                    }
                });
            }
            catch (Exception e)
            {
                Console.WriteLine($"{e.Message}");
            }

            return cookie;
        }
在dotnet绑定中,使用
WebDriverWait.Until时不需要
ExpectedConditions
。您可以根据您的情况发送一个
Func

还值得注意的是,如果直到
未能满足条件,它将在抛出之前检查配置的忽略异常类型列表。-

有关使用dotnet绑定获取cookie的更多详细信息,请查看接口

可以找到有关通常使用dotnet绑定的自定义等待的其他信息


希望这有帮助

非常感谢您的解释和代码片段Jordan,非常感谢!
public Cookie GetTokenCookie()
        {
            var webDriver = new ChromeDriver(); //or any IWebDriver

            var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(10));

            Cookie cookie = default(Cookie);

            try
            {
                cookie = wait.Until(driver =>
                {
                    Cookie tokenCookie = driver.Manage().Cookies.GetCookieNamed("nameOfCookie");
                    if (tokenCookie != null)
                    {
                        Console.WriteLine("\nToken Cookie added: " + tokenCookie);
                        return tokenCookie;
                    }
                    else
                    {
                        Console.WriteLine("waiting for cookie...");
                        return null;
                    }
                });
            }
            catch (Exception e)
            {
                Console.WriteLine($"{e.Message}");
            }

            return cookie;
        }