首页 > 解决方案 > 无法将鼠标悬停在菜单上以使其在 Selenium 中折叠

问题描述

有一个 ID 为“usermenucollapsed”的菜单按钮。我想将鼠标悬停在它上面,以便出现菜单并提供注销选项。我已经用它的'id'标识了菜单,并在其上使用了 moveToElement() 来悬停菜单以使菜单出现,但没有运气。我检查了菜单按钮不在框架中,确保不需要切换到框架。

isDisplayed() 返回 false 而 isEnabled 返回 true。

<div class="mobile-bar">
        <ul id="toolbar" class="toolbar">
            <li id="quickcreatetop" class="create dropdown nav navbar-nav quickcreatetop">
                <a class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
                    CREATE
                </a>
                <ul class="dropdown-menu" role="menu">
                    <li>
                        <a href="index.php?module=Accounts&action=EditView&return_module=Accounts&return_action=DetailView">Create Account</a>
                    </li>
                    <li>
                        <a href="index.php?module=Contacts&action=EditView&return_module=Contacts&return_action=DetailView">Create Contact</a>
                    </li>
                    <li>
                        <a href="index.php?module=Opportunities&action=EditView&return_module=Opportunities&return_action=DetailView">Create Opportunity</a>
                    </li>
                    <li>
                        <a href="index.php?module=Leads&action=EditView&return_module=Leads&return_action=DetailView">Create Lead</a>
                    </li>
                    <li>
                        <a href="index.php?module=Documents&action=EditView&return_module=Documents&return_action=DetailView">Create Document</a>
                    </li>
                    <li>
                        <a href="index.php?module=Calls&action=EditView&return_module=Calls&return_action=DetailView">Log Call</a>
                    </li>
                    <li class="last">
                        <a href="index.php?module=Tasks&action=EditView&return_module=Tasks&return_action=DetailView">Create Task</a>
                    </li>
                </ul>
            </li>
            <li id="" class="dropdown nav navbar-nav navbar-search">
                <button id="searchbutton" class="dropdown-toggle btn btn-default searchbutton" data-toggle="dropdown" aria-expanded="true">
                    <!--<span class="glyphicon glyphicon-search"> </span>-->Search
                </button>
                <div class="dropdown-menu" role="menu" aria-labelledby="searchbutton">
                    <form id="searchformdropdown" class="searchformdropdown" name='UnifiedSearch' action='index.php'
                          onsubmit='return SUGAR.unifiedSearchAdvanced.checkUsaAdvanced()'>
                        <input type="hidden" class="form-control" name="action" value="UnifiedSearch">
                        <input type="hidden" class="form-control" name="module" value="Home">
                        <input type="hidden" class="form-control" name="search_form" value="false">
                        <input type="hidden" class="form-control" name="advanced" value="false">
                        <div class="input-group">
                            <input type="text" class="form-control query_string" name="query_string" id="query_string"
                                   placeholder="Search..." value=""/>
                        <span class="input-group-btn">
                            <button type="submit" class="btn btn-default"><!--<span class="glyphicon glyphicon-search"
                                                                                aria-hidden="true"></span>-->Search</button>
                        </span>
                        </div>
                    </form>
                </div>
            </li>
            <li id="desktop_notifications" class="dropdown nav navbar-nav desktop_notifications">
                <button class="alertsButton btn dropdown-toggle" data-toggle="dropdown"
                        aria-expanded="false">
                    <span class="alert_count hidden">0</span>
                </button>
                <div id="alerts" class="dropdown-menu" role="menu">This information is not available</div>
            </li>
            <li>
                <form id="searchform" class="navbar-form searchform" name='UnifiedSearch' action='index.php'
                      onsubmit='return SUGAR.unifiedSearchAdvanced.checkUsaAdvanced()'>
                    <input type="hidden" class="form-control" name="action" value="UnifiedSearch">
                    <input type="hidden" class="form-control" name="module" value="Home">
                    <input type="hidden" class="form-control" name="search_form" value="false">
                    <input type="hidden" class="form-control" name="advanced" value="false">
                    <div class="input-group">
                        <input type="text" class="form-control query_string" name="query_string" id="query_string"
                               placeholder="Search..." value=""/>
                <span class="input-group-btn">
                    <button type="submit" class="btn btn-default"><!--<span class="glyphicon glyphicon-search"
                                                                        aria-hidden="true"></span>-->Search</button>
                </span>
                    </div>
                </form>
            </li>
            <li id="globalLinks" class="dropdown nav navbar-nav globalLinks-mobile">

需要的按钮是这个。

<button id="usermenucollapsed" class="dropdown-toggle btn btn-default usermenucollapsed" data-toggle="dropdown"
                        aria-expanded="true">
                </button>

WebElement menu = driver.findElement(By.id("usermenucollapsed"));
Actions builder = new Actions(driver);
builder.moveToElement(menu).build().perform();

标签: seleniumselenium-webdriverwebdriver

解决方案


这不完全是您所要求的,但根据我的经验,在这些情况下,最简单的方法就是使用 javascript 单击注销按钮,而不必首先将鼠标悬停在菜单上。你可以这样做:

WebElement element = driver.findElement(By.id("logout button selector here"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

推荐阅读