Java Selenium 3.5.3 等待 css-class 更改

标签 java selenium

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

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

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

单击后,站点将刷新并将类别更改为...

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

我已经尝试等待浏览器完成加载,但它不会真正起作用,因为我无法让驱动程序等待这个 CSS 类更改。显然,在定义站点状态时,这是我可以引用的唯一更改。看起来框架刷新了,但元素保持完全相同,不包括这个类。

我目前正在使用一个网站,但由于缺少 ID 和类似的内容,该网站实际上很难使用。不用说,这不是我的网站,我也无法编辑代码。

有什么想法吗?

提前致谢:)

最佳答案

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

假设您的 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 表达式,所以你应该没问题。

关于Java Selenium 3.5.3 等待 css-class 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46470898/

相关文章:

java - 我可以自动检测连接特定设备的串行端口吗?

java - 在弹出窗口中单击微调器会导致 WindowManager$BadTokenException

c# - 像 selenium 这样的 headless 浏览器,但它不会打开实际的浏览器

html - css list-style-type decimal, numbering 自动化测试

java - 程序启动 testNG selenium 测试卡住

java - 使用摘要异步签署 pdf

Java Socks5 外部应用程序

java - 如何跟踪鼠标在桌面上的点击

android - 是否可以通过 selenium (appium) 代码访问 android 手机设置?

python - 使用完整的 xpath 和 Python 进行 Selenium scrape