【发布时间】:2018-03-30 11:59:06
【问题描述】:
我目前正在对一个无法轻松识别标签的应用程序进行一些 E2E 测试。我需要单击一个深度嵌套的按钮,这些按钮有时与其他按钮具有完全相同的名称和属性。
HTML 代码如下所示:
<div class='.ui .row'>
<div class='.ui .fluid'>
<div class='.content'>
<div>
<div class='.field'>
<button>Button</button>
</div>
</div>
</div>
<div class='.content'>
<div>
<div>Some other stuff</div>
<div class='.field'>
<button>Button</button>
</div>
</div>
</div>
</div>
</div>
因为我们有两个同名,所以我不能只使用browser.click('button*=Button')。我目前解决它的方式是这样的:
browser.click('div > div > div > div > div > button')
当第二个按钮时,我必须做这样的事情:
browser.click('div > div > div:nth-child(2) > div > div:nth-child(2) > button')
尽管它有效,但我有一些问题: - 它看起来不漂亮,对于可能刚刚拿起此代码的人来说不容易阅读 - 它会随着应用程序的最细微更改而过时,即使它与按钮无关
我的问题是在这些情况下是否有更好的选择这些按钮。
【问题讨论】:
-
元素上根本就没有属性吗?
-
是的,但这只是文件周围有很多重复的东西的类(想想引导类)
-
我假设您无权访问标记进行更改?
-
你们也可以提供课程吗?或任何类型的属性?
标签: html css selenium-webdriver css-selectors webdriver-io