javascript - WebDriver 下拉菜单不会保持打开状态

标签 javascript java selenium webdriver automated-tests

我正在使用 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/

相关文章:

java - 是否有明确的 Selenium 解决方案来解决 Internet Explorer 中带有 Java 的模式弹出对话框?

javascript - HTML 面板根据 DataTables Select 出现/消失

javascript - Angularjs 检测新 Dom 上的指令

php - JavaScript 无法获取用户的个人资料名称和 ID

java - 将 'this' 传递给新对象的内联重写方法的正确方法是什么?

java - 签署 JNLP 文件

javascript - Selenium IDE - 如何处理 java 脚本警报和确认

javascript - 在表单提交时清除<选项值>

java - 带有先决条件的轻量级 Java 库?

python - 使用 selenium python 脚本将值写入隐藏元素