Selenium C # как проверить, отображается ли отключенный элемент - PullRequest
0 голосов
/ 05 апреля 2019

Я проверяю, отображается ли элемент. Мое утверждение возвращало false, и я обнаружил, что это потому, что элемент отключен.
Я хотел бы проверить, отображается ли элемент, включен он или нет.

Мой фрагмент кода (из нашей среды метод проверки отображения элемента):

public bool IsElementPresent(IWebDriver browser, IWebElement element)
        {
            return utility.Element.IsDisplayed(element).Invoke(browser);
        }


public Func<IWebDriver, bool> IsDisplayed(IWebElement element)
        {
            return driver =>
            {
                try
                {
                    return element.Displayed;
                }
                catch (Exception e)
                {
                    MessageHandler.OutputError(e);
                    return false;
                }
            };
        }

Фрагмент кода метода, который вызывает IsElementPresent:

public void CheckSportsLoginDialogIsDisplayed()
        {
            Actions.Verify.IsElementPresent(Browser, SportsLogin).Should().BeTrue();
       }

Локатор:

[FindsBy(How = How.CssSelector, Using = "input.loginButton.submitButton.loginSubmit")]
private IWebElement SportsLogin { get; set; }

Элемент HTML:

<input class="loginButton submitButton loginSubmit disabled" value="Log in" type="submit" disabled="">

Как проверить, присутствует ли этот элемент? Неважно, если он отключен или включен. Спасибо, Riaz

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Я нашел ответ сейчас.Элемент был в iFrame.IFrame был дальше в дереве HTML.Мне пришлось переключиться на него, а затем проверить, отображается ли элемент.Мой код сейчас работает.

<iframe name="freebet" id="freebet" src="https://sports.companya.com/freebet" scrolling="auto" style="display: inline; height: 465px;" class="freebet" cd_frame_id_="9c810a320feffc91ad5fde8519f4d0cb"></iframe>

public void CheckSportsLoginDialogIsDisplayed()
    {
        Actions.Navigate.ToFrame(Browser,FrameOption.Default);                        
        Actions.Verify.IsElementPresent(Browser, SportsLogin).Should().BeTrue();            
    }
0 голосов
/ 05 апреля 2019
if(SportsLogin != null) // should be null if not present 
{
    bool isDisplayed = SportsLogin.Displayed;
}

Или создать расширение

/// <summary>
/// Requires finding element by FindElementSafe(By).
/// Returns T/F depending on if element is defined or null.
/// </summary>
/// <param name="element">Current element</param>
/// <returns>Returns T/F depending on if element is defined or null.</returns>
public static bool Exists(this IWebElement element)
{
    if (element == null)
    { return false; }
    return true;
}

Тогда вы можете использовать его как

bool exists = SportsLogin.Exist();
...