【问题标题】:Identify text inside div class bypassing span class绕过跨度类识别div类中的文本
【发布时间】:2019-10-03 15:56:39
【问题描述】:

我在 Visual Studio 中使用 Selenium。在我想打开一个下拉菜单的地方编写一个测试用例。我想使用它的唯一名称来识别菜单。

代码如下:

<div class="mat-select-value">
   <span class="mat-select-placeholder ng-tns-c34-170 ng-star-inserted">
   UniqueTextID
   </span>
</div> 

我的正常解决方案是这样的:

"//span[contains(@class,'mat-select-placeholder ng-tns-c34-170 ng-star-inserted')][contains(text(),'UniqueTextID')]"

问题在于 span 类:“mat-select-placeholder ng-tns-c34-170 ng-star-inserted”并不总是相同的。每次再次加载页面时,数字“c34-170”都会更改为一组新数字。

我的问题是:是否可以通过仅指定 div 类来识别“UniqueTextID”:“mat-select-value”跳过跨度类?

类似这样的:

"//div[contains(@class,'mat-select-value')][contains(text(),'UniqueTextID')]"

或者,如果我必须指定跨度类,是否可以只添加跨度类的开头,即每次都不会更改的部分:“mat-select-placeholder”?

【问题讨论】:

    标签: c# html visual-studio selenium


    【解决方案1】:

    你需要提供span标签。如果你不想使用类属性,你可以只使用文本值。

    //div[contains(@class,'mat-select-value')]/span[contains(text(),'UniqueTextID')]
    

    //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')]"
    

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 2019-03-26
      • 1970-01-01
      • 2021-07-14
      相关资源
      最近更新 更多