c# - 遮蔽元素名称改变ID

标签 c# css visual-studio selenium

我正在使用 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/

相关文章:

c# - 将两个属性反序列化为一个 .NET 属性

c# - 如何等待覆盖异步功能?

html - 如何在 CSS 中将子元素的边框绘制在其父元素之外(或模拟这种效果)?

regex - 使用 Visual Studio 正则表达式搜索查找空的 Try/Catch block

C# 防止在尝试打印文档时出现 Adob​​e Reader 窗口

c# - Windows Azure 上的 ASP.NET MVC 4 session 10 分钟后过期

html - x-editable popover 未完全显示

css - 清理 CSS 颜色的工具

visual-studio - nopcommerce 3.40 主题改变

python - 无法在 Windows 8 中使用 Python 3.3 找到 vcvarsall.bat