我正在尝试对元素属性进行wait.until,如下所示...
public static void WaitForElementSize(WebElement element, WebDriver driver, int timeoutInSeconds)
{
if (timeoutInSeconds > 0)
{
System.out.print(element.getAttribute("style"));
WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
wait.until(ExpectedConditions.attributeToBe(element, "style", "top: 0px;"));
}
}
我从打印行知道该属性符合预期,即“ top:0px;”但是当我逐步浏览wait.until上的代码时,直到UI中的元素被“单击”并更改为关闭(在这种情况下,样式更改为“ top:120px;”)。然后该方法从头开始,然后失败,因为它现在是错误的。
对于为什么该方法重新运行并更改该值的任何帮助,将不胜感激。
我也尝试过...
wait.until(e -> element.getAttribute("style") == "top: 0px;");
但这由于其他原因而失败,因此请尝试其他方法。
答案 0 :(得分:1)
atributetobe将执行equals string方法,因此,如果样式中还有其他内容,它将失败,请尝试使用属性contains:
wait.until(ExpectedConditions.attributeContains(element, "style", "top: 0px;"));
这不起作用:
wait.until(e -> element.getAttribute("style") == "top: 0px;");
您需要使用:
element.getAttribute("style").equals("top: 0px;)
比较字符串
答案 1 :(得分:0)
找到元素By.id("my-element-id")
没问题。
wait.until(
ExpectedConditions.attributeToBe(By.id("my-element-id"),
"atrributeNameString",
"attributeValueString" )
);`