selenium - 无法将鼠标悬停在菜单上以使其在 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();
解决方案
这不完全是您所要求的,但根据我的经验,在这些情况下,最简单的方法就是使用 javascript 单击注销按钮,而不必首先将鼠标悬停在菜单上。你可以这样做:
WebElement element = driver.findElement(By.id("logout button selector here"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
推荐阅读
- python - Python:将txt中的行更改为列
- postgresql - IllegalStateException:无法连接到数据库。请检查连接和设置
- python - 如果给定的顶点都被路径绑定,则读取二进制矩阵并返回布尔值
- pip - 未能建立球面几何。错误:无法为使用 PEP 517 且无法直接安装的球面几何构造轮子
- linux - 使用公共仓库 VS 本地仓库安装 debian
- laravel - Laravel - 如何合并查询
- security - 现代浏览器是否在很大程度上阻止了反射型 XSS 攻击?
- python - 调用某些函数时如何自动保存我的部分代码
- python - 在系列上进行链式操作,无需编写执行操作的函数
- python-3.x - 我正在尝试在我的 jetson nano 上构建媒体管道