【发布时间】:2019-06-10 22:16:42
【问题描述】:
对于 Selenium 的快速搜索元素,我认为它必须是一种简单的方法,将一些属性设置为 html-elements,例如:将 React Component Key 转换为 data-attribute(如果可能的话)。
当然,我可以将 id 或数据属性写入我的 span、div 和我的组件中的任何内容,但我无法使用 3d 方库的组件来执行此操作 - 这些组件可能没有像“id”这样的道具,我将不得不包装这些组件,然后通过标签或类找到它们......
或者也许是 webpack 的插件,用于为具有组件名称的元素设置数据属性。
但是,您如何在 React 应用渲染中找到元素?
我认为按类或标签查找元素不是一个好主意
这样的按键变换:
<MyComponent key="SuperComponent" />
...
<div data-attr="SuperComponent">...</div>
或像这样自动设置组件名称的属性:
<MySuperComponent />
...
<div data-attr="MySuperComponent">...</div>
【问题讨论】:
-
如果 data-attr="SuperComponent" 对页面上的那个元素是唯一的,那么它就像一个 ID。
-
@JeffC 当然唯一元素必须有 ID 而不是一些数据属性,但问题不在于它
-
不,您不必拥有 ID 即可在页面上唯一地定位元素。我的问题是属性/值
data-attr="SuperComponent"在页面上是否唯一。如果是这样,您可以使用它而不是在所有东西上放置 ID。例如,在开发控制台中运行$$("div[data-attr='SuperComponent']")并查看它是否仅返回 1 个元素。如果是这样,那么您就有了一个唯一的定位器。
标签: html reactjs selenium webpack attributes