有没有办法用Selenium寻找元素的CSS类更改?
该类标记当前在浏览器中选择的元素。
<span class="tabs2_tab guide_tab"> [...] </span>
点击网站刷新并将课程更改为...
<span class="tabs2_tab guide_tab is-required"> [...] </span>
我已经尝试过等待浏览器完成加载,但它确实无法正常工作,因为我无法让驱动程序等待此 CSS-Class更改。显然,这是我可以参考的唯一变化,以便定义网站的状态。看起来框架刷新,但元素保持完全相同,不包括此类。
我目前正在使用一个网站,由于缺少ID和类似内容,这实际上非常糟糕。不用说,这不是我的网站,也不能编辑代码。
有什么想法吗?
提前致谢:)
答案 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表达式,所以你应该没问题。