我使用Protractor(在Angular应用程序中(为菜单编写了e2e测试,并尝试选择标识符为by.cssContainingText
的链接元素。
HTML代码如下所示:
<a class="parent" href="#">
<svg>
...
<title>Home</title>
...
</svg>
Home
</a>
但是,如果在这种情况下使用by.cssContainingText
Protractor选择器,我的测试会不时失败。
对此,什么是好的方法?
在selenium中,如果默认情况下对父元素执行get text,它也会获取所有子元素的文本,因此当执行by.cssContainingText
时,如果有子元素,它会失败。
为了避免这种情况
#1-使用函数text()='Your text'
的xpath而不是by.cssContainingText
#2-:-将所有嵌套文本传递给选择器(这不好,因为定位器独立于其他元素(
所以对于上面的html代码,如果您想选择Home
,那么标识符将是.//a[//title[text()='Home']]
或.//title[text()='Home']/parent::a