我正在使用 Visual Studio 在 Selenium 中编写测试用例。
在几个测试用例中,我需要等待一个临时的模糊元素消失。问题是这个元素的名称改变了它的“数字 ID”。
这是模糊元素的名称:
.mat-snack-bar-container.ng-tns-c36-13.ng-trigger.ng-trigger-state.snack-bar-success.mat-snack-bar-top.ng-star-inserted
总是变化的部分是这部分:36-13
我在等它这样消失:
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.CssSelector(".mat-snack-bar-container.ng-tns-c36-13.ng-trigger.ng-trigger-state.snack-bar-success.mat-snack-bar-top.ng-star-inserted")));
而不是我编写 9999 行代码来覆盖此元素的每个 ID。有没有办法只写一行代码在 00-00 到 99-99 之间的范围内查找此 ID?
最佳答案
这是在 css 中使用开头和结尾的解决方案。
[class^='mat-snack-bar-container ng-tns-c'][class$='ng-trigger ng-trigger-state snack-bar-success mat-snack-bar-top ng-star-inserted']
下面的代码会等到元素不可见。
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.CssSelector("[class^='mat-snack-bar-container ng-tns-c'][class$='ng-trigger ng-trigger-state snack-bar-success mat-snack-bar-top ng-star-inserted']")));
关于c# - 遮蔽元素名称改变ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56342659/