【发布时间】:2017-06-20 03:04:32
【问题描述】:
我是一名自动化工程师,我目前正在尝试为可持续的网页创建测试用例(我可以在以后运行并且仍然通过)
这是我的问题:
我正在尝试选择具有相同确切类名的多个 Web 按钮。现在我可以“选择”这些按钮,但这些只是 临时 x 可能会更改的路径。
对于相同的网络元素,我需要唯一的 ID(或某种区分它们的方法)。 x 路径的唯一区别是:
我可以找到每个按钮的 HTML 格式代码,但是如果移动一个按钮,我的测试将失败。
HTML 代码是类名 + 按钮的第 n 个。但是,如果从网页中取出一个按钮,我的测试将再次失败。
//*[@id="tenant-details-accordion"]/div[1]/div[2]/div/div[2]/div[1]/div/a/div
//*[@id="tenant-details-accordion"]/div[1]/div[2]/div/div[2]/div[2]/div/a/div
//*[@id="tenant-details-accordion"]/div[1]/div[2]/div/div[2]/div[3]/div/a/div
^^上面的代码是我目前使用 Selenium 找到每个按钮的方式
如果我复制每个类 x 路径,这就是我得到的
<div class="src-js-components-DateControl-___DateControl__dateControl___2nYAL"><a tabindex="0"><div class="src-js-components-DateControl-___DateControl__icon___2z6Ak null"></div><!-- react-text: 392 -->Set +<!-- /react-text --></a></div>
<div class="src-js-components-DateControl-___DateControl__dateControl___2nYAL"><a tabindex="0"><div class="src-js-components-DateControl-___DateControl__icon___2z6Ak null"></div><!-- react-text: 386 -->Set +<!-- /react-text --></a></div>
<div class="src-js-components-DateControl-___DateControl__dateControl___2nYAL"><a tabindex="0"><div class="src-js-components-DateControl-___DateControl__icon___2z6Ak null"></div><!-- react-text: 398 -->Set +<!-- /react-text --></a></div>
我已经与开发团队讨论过这个问题,但是他们告诉我为这些 Web 元素分配唯一 ID 是一个很大的禁忌。 (当我们投入生产时,这与项目的全球化有关)即使他们确实分配了唯一 ID,他们告诉我在项目可以投入生产之前他们必须剥离它们。这最终会使我的测试最终变得毫无用处......
我现在来 Stack Overflow 寻求帮助,我在网上查找的所有内容都无法给我答案,但这似乎是 QA 和开发部门之间的有效问题。
有没有办法将 ID 分配给 Web 元素,以便使用 selenium 的测试人员可以识别它们,但不会影响开发人员在整个项目中使用该元素的能力? p>
编辑: 使用我公司使用的框架,我实际上并没有在 selenium 中编写任何代码。我将 Xpath 保存到一个对象,然后在手动测试中使用预先存在的方法调用该对象。我只能选择要保存在对象中的 Xpath。
稍后我将与 Dev 交谈,让他们解释大的“不可以”,以便我可以与大家交流。感谢您的时间和意见
例如:
BirthDateSet= someXpath
Click() using {BirthDateSet}
这里有一些图片可以帮助您直观地了解
【问题讨论】:
-
分享一些
HTML提到的按钮的代码示例 -
提供的数据是
XPath表达式,而HTML代码示例应该看起来像<div id="tenant-details-accordion"> <div>...</div> </div>... 你能也分享这个信息吗?您可以从浏览器HTMLinspector 获取它 -
开发人员是否说过为什么他们认为“为这些 Web 元素分配唯一 ID 是一个很大的禁忌”?我可以猜测,也许这些是动态创建的对象,但您仍然可以将 ID 分配给具有可预测且动态值的元素。至于那是“不可以”,您的开发人员并不知情。
标签: selenium testing selenium-webdriver automation qa