我在Visual Studio中使用Selenium。在要打开下拉菜单的地方编写测试用例。我想使用唯一的名称来标识菜单。
代码如下:
<apply executable="java" parallel="false" dest="${originaljs.dir}">
<fileset dir="${originaljs.dir}" includes="EfsStructure.js" />
<arg line="-jar"/>
<arg path="../yuicompressor-2.4.7.jar" />
<arg line="-v"/>
<arg line="-o"/>
<srcfile/>
<mapper type="glob" from="EfsStructure.js" to="${tempjs.dir}/temp/*-min.js"/>
</apply>
我对此的正常解决方法是:
<div class="mat-select-value">
<span class="mat-select-placeholder ng-tns-c34-170 ng-star-inserted">
UniqueTextID
</span>
</div>
问题在于,跨度类:“插入了mat-select-placeholder ng-tns-c34-170 ng-star”并不总是相同。每次再次加载页面时,数字“ c34-170”将更改为一组新的数字。
我的问题是:是否可以通过仅指定div类来识别“ UniqueTextID”:跳过跨度类的“ mat-select-value”?
类似这样的东西:
"//span[contains(@class,'mat-select-placeholder ng-tns-c34-170 ng-star-inserted')][contains(text(),'UniqueTextID')]"
或者,如果我必须指定span类,是否可以仅添加span类的开始,即每次都不会更改的部分:“ mat-select-placeholder”?
答案 0 :(得分:1)
您需要提供span标签。如果您不想使用class属性,则只能使用文本值。
//div[contains(@class,'mat-select-value')]/span[contains(text(),'UniqueTextID')]
OR
//div[contains(@class,'mat-select-value')]/span[contains(.,'UniqueTextID')]
或者,如果您要同时使用带有class属性的span标签和starts-with
"//div[contains(@class,'mat-select-value')]/span[starts-with(@class,'mat-select-placeholder ng-tns-')][contains(text(),'UniqueTextID')]"