我可以将id属性添加到使用React创建的html元素中

问题描述 投票:1回答:1

我正在使用Selenium为React开发的Web应用程序编写端到端测试。在检查网站时,我发现实际上没有一个html元素具有id属性集。

由于我们的开发团队忙于做其他事情,我应该自己解决这个问题。到目前为止,我已经通过使用css选择器和xpath在我的测试中定位元素来解决这个问题。

但是,我觉得这种方法很容易出错,因为我没有特别参与开发过程,所以我可能不会立即知道网站结构的变化。

为了使测试更加健壮,我想通过他们的id属性找到我的大部分元素。如果站点是在react框架之外编写的,我只需将id属性添加到html文档中的所需元素即可。

在没有完全理解React源代码的情况下,有没有办法让我这样做?

javascript reactjs selenium xpath css-selectors
1个回答
-1
投票

应对

React是一个用于构建用户界面的JavaScript库。 React可以更轻松地为应用程序中的每个状态设计简单视图。当应用程序数据发生变化时,React可以有效地更新和呈现正确的组件。声明性视图使您的代码在调试时更加可预测和更容易。由于组件逻辑是用JavaScript而不是模板编写的,因此您可以轻松地通过应用程序传递丰富的数据,并将状态保持在HTML DOM之外。这反过来有助于构建管理其自身状态的封装组件,然后组合它们以制作复杂的UI。


渲染()

render()是生命周期中存在于多个生命周期阶段的一种方法。它出现在这里诞生,这是我们在成长中花费大量时间的地方。


渲染道具

render prop是指使用其值为函数的prop来在React组件之间共享代码的技术。具有render prop的组件接受一个函数,该函数返回一个React元素并调用它而不是实现自己的渲染逻辑。一个例子:

<DataProvider render={data => (
  <h1>Hello {data.target}</h1>
)}/>

反应组件

React组件实现了render()方法,该方法获取输入数据并返回要显示的内容。传递到组件的输入数据可以通过render()访问this.props。以下示例使用类似XML的语法JSX:

码:

class HelloMessage extends React.Component {
  render() {
    return (
      <div>
    Hello {this.props.name}
      </div>
    );
  }
}

ReactDOM.render(
  <HelloMessage name="CrispJam" />,
  document.getElementById('hello-example')
);

结果:

Hello CrispJam

结论

因此,如果没有完全理解,就无法编辑React源代码。然而,Locator Strategies同样足以根据静态和动态属性定位和识别元素。

您可以在以下位置找到相关的讨论:

© www.soinside.com 2019 - 2024. All rights reserved.