selenium中hidden或者是display = none的元素定位到但是不可以操作怎么办?
1、selenium中hidden或者是display = none的元素定位到但是不可以操作怎么办?
@FindBy(id = "bs3Select")
public WebElement 状态;
查询条件“状态“是多选查询,但是这个元素是隐藏的,即style="display: none;",可以获取但是点不到
没查到好用的方法,最终用的一种笨方法,就是用Java将元素改为可见,操作后还原不可见,关键代码如下:
//将元素改为可见
String js1="document.getElementById(\"bs3Select\").style.display='';";
SFSeleniumCommon.执行js(js1);
//执行选择操作
SFSeleniumCommon.选择下拉列表记录(employeeListPage.状态, 状态);
//将元素改为可见
String js2="document.getElementById(\"bs3Select\").style.display='none';";
SeleniumCommon.执行js(js2);
//后续的操作
employeeListPage.查询按钮.click();
2、cucumber中执行js
写登出自动化脚本时遇到一个麻烦问题:鼠标移动到特定元素,就会自动出现下拉菜单,登出按钮在这个下拉菜单里。那么使用任何代码都无法模拟鼠标移动到指定元素,这时候,只能考虑指定元素出现下拉菜单时的格式变化。
这时候,通过浏览器页面直接修改这个元素的class,就出现了登出下拉菜单,这时候只要click登出按钮就可以了。另一方面的难点,就是查找这个特定元素时遇到了麻烦,因为没有id,也没有name,所以找不到,只能通过元素标签来一级级找。整个过程花了2个小时,才搞定一行js代码,代码如下:
String logoutJs="var allPageTags=document.getElementsByTagName('li');for (i=0; i<allPageTags.length; i++)if (allPageTags[i].className=='dropdown dropdown-user') {allPageTags[i].setAttribute('class','dropdown dropdown-user open');}";
SeleniumCommon.执行js(logoutJs);
登出按钮.click();