C# 当Selenium测试Azure Active Directory边缘webdriver登录到您的帐户页时,元素被遮挡

C# 当Selenium测试Azure Active Directory边缘webdriver登录到您的帐户页时,元素被遮挡,c#,selenium-webdriver,integration-testing,coded-ui-tests,azure-active-directory,C#,Selenium Webdriver,Integration Testing,Coded Ui Tests,Azure Active Directory,我正在使用Selenium进行集成测试。测试的一部分是Microsoft Azure Active Directory的登录过程 使用InternetExplorerWebDriver时测试通过,但使用EdgeWebDriver时测试失败,错误为: 元素是模糊的 守则的有关部分: var wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(10)); webDriver.Url = Settings.UrlHome(); var s

我正在使用Selenium进行集成测试。测试的一部分是Microsoft Azure Active Directory的登录过程

使用InternetExplorerWebDriver时测试通过,但使用EdgeWebDriver时测试失败,错误为:

元素是模糊的

守则的有关部分:

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

var signInElement = webDriver.FindElement(By.Id("SignInLink"));
signInElement.Click();      

wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("my_login_name")));
var loginLogoMicrosoft = webDriver.FindElement(By.Id("my_login_name"));

loginLogoMicrosoft.Click();
执行最后一次单击()时出错。我尝试过其他几种元素,但都不起作用。还可以“检查元素”来确定哪些元素在代码中实现时收到了单击“获取此错误”的命令

如何使Microsoft Azure Active Directory登录过程成为Selenium测试的一部分


发现了类似的问题。

我使用以下代码填写Azure AD登录表单。需要注意的是,当您填写用户名字段时,“登录”按钮将被禁用,直到在后台完成一些ajax操作。诀窍是等待页面上没有此类的登录按钮

private void SubmitLoginForm()
{
    var useAnotherAccount = Driver.FindElements(By.ClassName("use_another_account")).FirstOrDefault();

    if (useAnotherAccount != null)
    {
        useAnotherAccount.Click();
    }

    var loginInput = Driver.FindElements(By.Id(Site.Login.UserNameInput)).FirstOrDefault();

    if (loginInput != null)
    {
        loginInput.SendKeys(TestingData.UserName);
        loginInput.SendKeys(Keys.Tab);
    }

    var passwordInput = Driver.FindElements(By.Id(Site.Login.PasswordInput)).FirstOrDefault();

    if (passwordInput != null)
    {
        passwordInput.Clear();
        passwordInput.SendKeys(TestingData.PassWord);
        passwordInput.SendKeys(Keys.Enter);
    }

    var wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(5));
    wait.Until(f => f.FindElement(By.CssSelector("#cred_sign_in_button:not(.disabled_button")));

    var loginButton = Driver.FindElements(By.Id(Site.Login.SigninButton)).FirstOrDefault();

    if (loginButton != null)
    {
        loginButton.Click();
        return;
    }

    throw new InvalidOperationException("Could not click the login button");
}

根据你的链接,这是EdgeDriver中确认的错误。等等…回答这个问题的两条主线是var Wait=new等。。。等等,直到。。。