我正在使用 Selenium/Java,并且在触发事件的下拉框方面遇到了一个有趣的问题......我不能使用 Select
因为下拉列表使用的是有组织的列表,而不是选择和选项(当框关闭时):
<section id="..." class="ember-view">
<ol id="...">
<li id="...">
我成功点击了下拉框:element.click();
下拉框打开!但是当下一行执行时它会再次关闭(这只是一个 System.out.println("...");
)。
我很困惑。我试过了
JavascriptExecutor jse = (JavascriptExecutor)driver
jse.executeScript("$(arguments[0]).change()", element);
和
jse.executeScript("$(arguments[0]).focus()", element);
甚至
jse.executeScript("$(arguments[0]).blur()", element);
在我点击下拉框之前和之后,那个小傻瓜就是不会保持打开状态!当我将参数值打印到控制台 System.out.println(jse.executeScript("$(arguments[0]));
时,参数为空...我不确定是什么这意味着。
最佳答案
如果您在单击下拉菜单时没有更改类,那么您将单击它,并且在您单击它很多次之后它就会消失。尝试使下拉列表始终显示并添加一个类,该类在单击时消失,称为“隐藏”或“removeDisplay”,如下所示
hide { display:none }
然后放到html元素中。
<htmlElement class="alwaysShowThis hide"></htmlElement>
确保在点击它时你删除了 hide
类,然后你可以在它上面放一个计时器或者只检测你何时将鼠标悬停在它上面。
JavaScript 可能如下所示:
display(event) {
if(/*checkfor hide class existing*/){
//remove hide class
}
}
hide() {
if(alwaysShowThis or its id is not being hovered over){
//add hide class to its classes
}
}
我的意思是,这些只是一些 5 分钟的建议,显然有一种方法可以更好地编写这些内容,但我并没有想出它们,但是您可以很容易地找到如何完成所有这些事情。
关于javascript - WebDriver 下拉菜单不会保持打开状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51676696/