硒长时间检查DOM中是否存在该元素

时间:2019-05-31 10:42:15

标签: c# selenium selenium-webdriver selenium-chromedriver

打开页面后,我试图检测是否在篮子内可见任何元素。

如果存在某个元素,我会立即将其清空以清除测试篮中的“清除数据”。

代码:

这是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中设置方法,但是等待是一样的...有什么想法吗?

0 个答案:

没有答案