Java Selenium 3.5.3等待css-class改变

时间:2017-09-28 13:51:19

标签: java selenium

有没有办法用Selenium寻找元素的CSS类更改?

该类标记当前在浏览器中选择的元素。

    <span class="tabs2_tab guide_tab"> [...] </span>

点击网站刷新并将课程更改为...

<span class="tabs2_tab guide_tab is-required"> [...] </span>

我已经尝试过等待浏览器完成加载,但它确实无法正常工作,因为我无法让驱动程序等待 CSS-Class更改。显然,这是我可以参考的唯一变化,以便定义网站的状态。看起来框架刷新,但元素保持完全相同,不包括类。

我目前正在使用一个网站,由于缺少ID和类似内容,这实际上非常糟糕。不用说,这不是我的网站,也不能编辑代码。

有什么想法吗?

提前致谢:)

1 个答案:

答案 0 :(得分:0)

在C#中,我使用它来检查WebElement属性是否已更改,据我所知,Java可以使用相同的模式。此方法仅查看value指定的name属性是否已更改。

假设您的driver实例与desiredTimeout一样好。所以在C#中你有:

public void WaitForAttributeToChange(IWebElement element, string name, string previousValue)
    {
        WebDriverWait wait = new WebDriverWait(driver, desiredTimeout);
        wait.Until((d) =>
        {
            if (element.GetAttribute(name) != previousValue)
            {
                return element;
            }
            return null;
        });
    }

之后你可以这样称呼:

WaitForAttributeToChange(yourElement, "class", "previous_class_here");

这适用于大小更改,所以我想如果你把它翻译成Java,它可能会有所作为。据我所知,Java确实有lambda表达式,所以你应该没问题。