簡體   English   中英

硒等待用戶驗證碼輸入C#

[英]Selenium wait for user captcha input C#

我是Selenium的新手,並使用C#來登錄一個由用戶名,密碼和驗證碼組成的頁面。 問題是,對於驗證碼,它必須等待用戶輸入並手動提交表單。 我不知道在這個問題上哪種解決方案是正確的。 請問有什么更好的辦法嗎?

這是我的代碼。

        var driver = new FirefoxDriver();
        driver.Navigate().GoToUrl("http://someonewebite.com/");

        IWebElement usernameInput = driver.FindElement(By.Name("txtUserName"));
        IWebElement passwordInput = driver.FindElement(By.Name("txtPassword"));

        usernameInput.SendKeys("username");
        passwordInput.SendKeys("password");

        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
        wait.Until((d) =>
        {
            return (bool)((RemoteWebDriver)d).ExecuteScript("return document.body.className.match(/\submittedpage\b/).length");
        });

據我所知,我們無法自動化硒中的驗證碼...驗證碼的主要優點是它不能被任何自動化語言所破壞,這就是為什么要使用它。

我認為,如果沒有手動交互就無法登錄,那么使用WebDriverWait的方法是一種很好的方法–為什么要更改它? 但是,您不必使用JavaScript來識別是否已成功登錄。 也可以在傳遞給wait.Until()的謂詞中使用任何WebDriver方法。 因此,您還可以執行以下操作:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
wait.Until((d) =>
{
    return d.FindElement(…); // here you can use any locator that identifies a successful / failed login
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM