有没有办法用 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/