如何解决我应该强迫开发人员编写元素 ID 来编写适当的自动化测试吗?
我现在正在为基于 React 的 web 应用程序编写 selenium 测试,并面临着用 selenium 编写测试的一些问题。
看起来大多数元素都没有唯一 ID,我可以使用 Selenium 方法简单地找到它们。我使用 Selenium IDE 并手动创建测试并将它们导出到 python,但它们通常如下所示:
browser.find_element(
By.CSS_SELECTOR,".MuiButton-containedPrimary > .MuiButton-label"
).click()
在我看来,这对于其他人来说太复杂了,无法阅读和维护。即使我自己编写测试,它们也会太难阅读。 (即使它们发展很快)
我的问题是:实现可维护性和测试简单性的最佳方法是什么? 我是否应该强制开发人员为按钮等核心元素提供唯一 ID?
如果给出唯一的 id,典型的搜索方法可以这样工作:
element = browser.find_element_by_id('createProjectArea')
解决方法
是:
我是否应该强制开发人员为核心元素提供唯一 ID
在上一个项目中,我们准确地做到了。当然,有很多元素,覆盖每个元素很麻烦,但随后您开始使用 css_selectors 和 xpath,如果可能,尽量不要与相邻元素相关联。
并尝试使用:
driver.find_element(By.CSS_SELECTOR,'selector')
或
driver.find_element(By.XPATH,'selector')
在最新的 selenium 版本 (4) 中将开始收到有关其弃用的警告:
- find_element_by_id
- find_element_by_name
- find_element_by_tag
- find_element_by_xpath
- 等
warnings.warn("find_element_by_* 命令已被弃用。请使用 find_element() 代替")
,为您希望 Selenium 测试专门操作的任何字段或控件分配一个已知 ID。这可以使测试对 HTML 拓扑的后续更改更具抵抗力 - 与依赖周围上下文的其他替代方案不同。这可能是一个真正的优势。
我认为这是一种平衡行为。如果创建 ID 有助于您编写测试,那么为此目的,无论何时何地,它都可以真正适用。但我不会去“强迫开发人员......”不要在字段中乱扔应用程序或测试实际上不会引用的ID。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。