Селен долго проверял, присутствует ли этот элемент в DOM - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь определить, видны ли какие-либо элементы внутри корзины после открытия страницы.

Если элемент присутствует, я немедленно отменяю его, чтобы очистить корзину для теста, чтобы "очистить"data ".

Код:

Это код DOM:

<div class="product-box">
    <div>
        <div class="rc-swipeout">
            <div class="rc-swipeout-cover"></div>
            <div class="rc-swipeout-actions rc-swipeout-actions-right">
                <div class="rc-swipeout-btn swipeout-minus" role="button">
                    <div class="rc-swipeout-btn-text"><span class="material-icons minus-icon " style="color: rgba(0, 0, 0, 0.87); position: relative; font-size: 24px; display: inline-block; user-select: none; transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;">remove</span></div>
                </div>
                <div class="rc-swipeout-btn swipeout-plus" role="button">
                    <div class="rc-swipeout-btn-text"><span class="material-icons plus-icon " style="color: rgba(0, 0, 0, 0.87); position: relative; font-size: 24px; display: inline-block; user-select: none; transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;">add</span></div>
                </div>
                <div class="rc-swipeout-btn swipeout-remove" role="button">
                    <div class="rc-swipeout-btn-text"><span class="material-icons delete-icon " style="color: rgba(0, 0, 0, 0.87); position: relative; font-size: 24px; display: inline-block; user-select: none; transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;">delete</span></div>
                </div>
            </div>
            <div class="rc-swipeout-content" style="touch-action: pan-y;">
                <div class="cart-item-container" data-product-key="c754870c-fd8a-96a3-04f3-8300f11b3b22">
                    <div class="cart-item-container-content">
                        <div class="cart-item-name-container">
                            <div class="cart-item-hideoverflow">
                                <!-- react-text: 1969 -->Latte
                                <!-- /react-text --><span class="cart-item-size">(Normal)</span></div>
                        </div>
                        <div class="cart-item-count-container">
                            <div>1</div>
                        </div>
                        <div class="cart-item-price">
                            <div>
                                <div>3.50</div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div>
        <div class="rc-swipeout">
            <div class="rc-swipeout-cover"></div>
            <div class="rc-swipeout-actions rc-swipeout-actions-right">
                <div class="rc-swipeout-btn swipeout-minus" role="button">
                    <div class="rc-swipeout-btn-text"><span class="material-icons minus-icon " style="color: rgba(0, 0, 0, 0.87); position: relative; font-size: 24px; display: inline-block; user-select: none; transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;">remove</span></div>
                </div>
                <div class="rc-swipeout-btn swipeout-plus" role="button">
                    <div class="rc-swipeout-btn-text"><span class="material-icons plus-icon " style="color: rgba(0, 0, 0, 0.87); position: relative; font-size: 24px; display: inline-block; user-select: none; transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;">add</span></div>
                </div>
                <div class="rc-swipeout-btn swipeout-remove" role="button">
                    <div class="rc-swipeout-btn-text"><span class="material-icons delete-icon " style="color: rgba(0, 0, 0, 0.87); position: relative; font-size: 24px; display: inline-block; user-select: none; transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;">delete</span></div>
                </div>
            </div>
            <div class="rc-swipeout-content" style="touch-action: pan-y;">
                <div class="cart-item-container product-active" data-product-key="187cf8f5-0b0b-810f-919d-479995b356a0">
                    <div class="cart-item-container-content">
                        <div class="cart-item-name-container">
                            <div class="cart-item-hideoverflow">
                                <!-- react-text: 1994 -->Hot Dog
                                <!-- /react-text --><span class="cart-item-size">(Normal)</span></div>
                        </div>
                        <div class="cart-item-count-container">
                            <div>1</div>
                        </div>
                        <div class="cart-item-price">
                            <div>
                                <div>3.50</div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

1) Элементы:

private static readonly By BasketRowsLocator = By.XPath("//div[@class = 'cart-item-container-content']");
public IList<IWebElement> BasketRowsElements => driver.FindElements(BasketRowsLocator);

2) Метод

public bool IsBasketNotEmpty()
{
    if (BasketRowsElements.Count > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

3) Последний метод в настройке NUnit

private void ValidateEmptyBasket()
{
    try
    {
        var basketResult = mainPosPage.BasketComponent.IsBasketNotEmpty();
        if (basketResult == true)
        {
            mainPosPage.LeftActionBarComponent.VoidElement.Click();
            mainPosPage.WorkSpaceComponent.VoidDialogBoxComponent.YesButtonElement.Click();
        }
    }
    catch (Exception)
    {
        throw;
    }
}

Когда что-то находится внутри корзины, удаление выполняется очень быстро, но когда корзина пуста, она ждет пару секунд и после этогоон движется для выполнения теста.

Я пытался также установить метод внутри TeadDown, но ожидание такое же ... есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...