当Selenium测试Azure Active Directory的Edge webdriver登录时,元素被遮挡



我正在使用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();

执行最后一次Click()时发生错误。我试过其他几个元素,但都不起作用。当在代码中实现时,还可以'inspect element'来确定哪些元素接收到click get this错误。

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

在这里发现了同样的问题

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

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");
}

相关内容

  • 没有找到相关文章

最新更新