当前位置: 首页 > 知识库问答 >
问题:

悬停->等待可见性->再次悬停(不睡觉)

孙博艺
2023-03-14

我有一个类似菜单的结构,在一个菜单项上悬停会在一段延迟后打开一个子菜单。我在使用Selenium的确定性方法(=不使用Thread.Sleep)对该菜单进行web测试时遇到问题。

  • 要悬停在元素上,我需要使用Selenium的操作生成器类(MoveToElement

如何将这两种方法结合起来?我还没有找到一种方法来添加WebDriverWait。直到调用Actions对象。解决我的问题的推荐方法是什么?

我在SOF上发现了各种其他线程,但是,它们要么只解决上面两个要点中的一个,要么没有有效的答案(例如Selenium WebDriver MoveToElement-hidden element、hover和toggleClass)。

希望有人能帮忙:-)

共有2个答案

巫研
2023-03-14

尝试涉及JavascriptExecator

步骤#1

String menu_selector="abracadabra";

((JavascriptExecutor)driver).executeScript("$(\'"+menu_selector+"\').hover();");

注意:如果支持jQuery,那么这一条适用于您。

步骤#2然后出现fluentWait to wait子菜单:

String subMenu_selector="blablabla";


fluentWait(By.cssSelector(subMenu_selector));


   public WebElement fluentWait(final By locator) {
/*
fluent wait impementation documentation:
        http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/ui/FluentWait.html
*/
        Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)

                .withTimeout(10, TimeUnit.SECONDS)
                .pollingEvery(10, TimeUnit.MILLISECONDS)

//                .ignoring(NoSuchElementException.class);
                .ignoring(org.openqa.selenium.NoSuchElementException.class);

        WebElement foo = wait.until(
                new Function<WebDriver, WebElement>() {
                    public WebElement apply(WebDriver driver) {
                        return driver.findElement(locator);
                    }
                }
        );
        return foo;
    }

    ;
吴哲
2023-03-14

可以拆分动作生成器。没有必要一蹴而就。

生成并执行悬停操作。使用webdriver等待。然后构建并执行一个新操作

 类似资料:
  • 问题内容: 有时,我可以选择使用CSS元素:悬停或JavaScript onmouseover来控制页面上html元素的外观。考虑以下情况,其中div包装了输入 我希望输入将鼠标光标悬停在div上时更改背景色。CSS方法是 JavaScript方法是 每种方法的优点和缺点是什么?CSS方法是否适用于大多数Web浏览器?JavaScript比CSS慢吗? 问题答案: :hover的问题是IE6仅在链

  • 我正在使用mapbox并将多个geojson层加载到地图上,如下所示: 每个Geojson特性包含许多属性;例如,标题和描述在工具提示中正确显示。 我遇到的问题是通过其他交互访问这些属性。我正在调整悬停时每个多边形的样式,如下所示: 通过或访问交互中属性的任何尝试都将失败。我假设工具提示工作意味着它们可用,但无法计算出我哪里出错了。。。?

  • 我在IE上的css悬停有问题。 简化;我基本上有一个容器div,它将在悬停时显示一个小的div,里面有一些标记中选择一个,:hover由于某种原因将不再工作,div将消失。 在chrome/firefox等中尝试此示例以查看所需的结果&然后在IE11中再试一次以查看问题所在。 null null

  • 问题内容: 使用以下html,当我将鼠标悬停在孩子身上时,我的父母得到绿色背景。我该如何阻止这种情况的发生?如果我将鼠标悬停在子元素之外,我确实希望使用绿色背景。 CSS3很好。 问题答案: 因此,这确实很丑陋,但是(确实)有效。我基本上是在创建父母的副本作为孩子的兄弟姐妹。默认情况下,parent- overwrite是隐藏的,然后显示在child的悬停上。除非您使用+选择器而不是〜选择器,否则

  • 问题内容: 对于不是链接的元素,CSS 在IE6中不起作用。有解决方法吗?例如,我怎么应用到? 问题答案: 有什么:悬停。我从未亲自使用过它,但据我所知,它运作良好。 Whatever:hover是一个小型脚本,可以自动修补IE6,IE7和IE8怪癖的:hover,:active和:focus,使您像在其他任何浏览器中一样使用它们。版本3引入了对Ajax的支持,这意味着通过javascript插入

  • 问题内容: libgdx中是否有任何侦听器可以让我检测到鼠标悬停而不是鼠标悬停。在场景2D的按钮类中,您有2种方法isOver和isPressed,但是它们执行相同的操作…还有其他问题吗?还有另一种方法来检测鼠标悬停在actor上吗? 问题答案: 还有的可以连接到和它提供的事件,如下面的: 该事件从根本上来说意味着鼠标开始悬停在角色上,意味着它“离开”了角色的区域。它还有一个事件,您可以使用该事件