使用 Dojo ID 进行 Selenium WebDriver 测试 [重复]

Posted

技术标签:

【中文标题】使用 Dojo ID 进行 Selenium WebDriver 测试 [重复]【英文标题】:Selenium WebDriver Testing with Dojo IDs [duplicate] 【发布时间】:2018-07-04 21:03:17 【问题描述】:

我开发了一个自动化框架,用于测试使用 Dojo 构建的应用程序。我遇到的困难是 Dojo 动态生成 ID 的方式。因此,ID 与 XPath 一样易变。更改、添加或删除页面上的元素也可能导致元素的 ID 发生变化。这会导致自动化中断。我敢肯定,如果不检查每个页面上的每个元素并进行一些超出我专业知识的编码,可能就没有 100% 的解决方案。但是,我在这里请求更有经验的程序员就在这种情况下获取测试元素的最佳方法是什么(破坏最少的解决方案)提出您的建议。现在我正在通过 ID 抓取它们。

【问题讨论】:

您是否尝试过使用 css 选择器来定位元素?请显示一些 html 代码 请阅读How to Ask,尤其是关于minimal reproducible example(MCVE)和How much research effort is expected?的部分,这将帮助您调试自己的程序并自己解决问题。如果您这样做并且仍然卡住,您可以返回并发布您的 MCVE、您尝试过的内容以及执行结果(包括任何错误消息),以便我们更好地帮助您。还提供指向页面和/或相关 HTML 的链接。 请提供几个 HTML 示例。获取包含您感兴趣的元素的相关 HTML 部分,然后刷新页面并提供相同的 HTML 部分。这样我们就可以看到哪些变化,哪些没有变化……我们可以通过这种方式提供一个不那么脆弱的答案。 【参考方案1】:

定位元素的最佳方法是将一些绝对 xpath 与相对 xpath 相结合。所以基本上,你想要做的是,页面上不会改变的容器将收到一个绝对的 xpath。然后将出现和消失的元素将接收相对 xpath。

你能提供 HTML 吗?然后我可以给你一些例子。

【讨论】:

绝对 XPath 很少(如果有的话)是个好主意。它们非常脆弱。手工制作的 CSS 选择器或 XPath 会更好。 我同意。但是手工制作的 XPath 或 CSS 选择器可能还不够。啊,好吧,如果没有代码,我们无论如何都无法回答这个问题。

以上是关于使用 Dojo ID 进行 Selenium WebDriver 测试 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Zend Dojo 元素 ID 缺失

如何单击Dojo-heavy web上的按钮

python selenium,我无法从文本框中找到元素类或 id

Dojo : animateProperty for "display"

对 Dojo 商店物品进行排序

DOJO 错误 ID 已注册