xpath-选择包含CLASS名称中的文本的元素

时间:2018-12-04 15:15:13

标签: selenium testing selenium-webdriver xpath

我正在尝试找到一种选择此特定Web元素的方法:

<snack-bar-container class="mat-snack-bar-container ng-tns-c43-25 ng-trigger ng-trigger-state snackbar-info mat-snack-bar-center ng-star-inserted" role="alert" style="transform: translateY(0%);"><!----><simple-snack-bar class="mat-simple-snackbar ng-tns-c44-26 ng-trigger ng-trigger-contentFade ng-star-inserted" style="">Asset successfully loaded! <!----><button class="mat-simple-snackbar-action ng-tns-c44-26 ng-star-inserted" style="">Close</button></simple-snack-bar></snack-bar-container>

当前我是按文字选择的:

.//snack-bar-container//*[contains(text(),'There are errors on the page:')]

但是由于会进行本地化(文本翻译),因此从长远来看将是不可靠的,问题是,如何选择元素,该元素的类属性在类名中包含一些特定的文本。

您可以看到我的Web元素类很长,并且经常变化,因此我需要检查它是否包含一些特定的文本,

.//[contains(@class,’snackbar-info’)]

但这不起作用,有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:2)

您的陈述几乎是正确的。您仅在语句开头缺少SelectAll(*)。只需添加它,即可使用XPath:

//*[contains(@class, "snackbar-info")]