我正在使用Selenium为在React中开发的Web应用程序编写端到端测试。检查网站后,我发现几乎所有html元素都没有设置id属性。
由于我们的开发团队正忙于做其他事情,所以我应该自己解决这个问题。到目前为止,我已经通过使用CSS选择器和xpath在测试中定位元素来解决此问题。
但是,我觉得这种方法很容易出错,并且由于我没有特别参与开发过程,所以我可能不会立即了解网站结构的变化。
为了使测试更可靠,我想通过其id属性找到我的大多数元素。如果该网站是在react框架之外编写的,则只需将id属性添加到html文档中所需的元素即可。
在没有完全了解React源代码的情况下,我有办法做到这一点吗?
答案 0 :(得分:0)
React是用于构建用户界面的JavaScript库。 React使您可以更轻松地为应用程序中的每个状态设计简单视图。当您的应用程序数据更改时,React可以有效地更新和呈现正确的组件。声明式视图使您的代码在调试时也更加可预测和更容易。由于组件逻辑是用JavaScript而不是模板编写的,因此您可以轻松地通过应用程序传递丰富的数据,并将状态保持在HTML DOM之外。反过来,这有助于构建封装的组件来管理其自身的状态,然后将它们组合成复杂的UI。
render()
是生命周期中的一种方法,存在于多个生命周期阶段。它发生在出生中,这是我们在成长中花费很多时间的地方。
render prop
是指一种使用价值为函数的prop在React组件之间共享代码的技术。具有渲染道具的组件采用返回React元素并调用它的函数,而不是实现自己的渲染逻辑。一个例子:
<DataProvider render={data => (
<h1>Hello {data.target}</h1>
)}/>
反应组件实现render()
方法,该方法获取输入数据并返回要显示的内容。 render()
可以通过this.props
访问传递到组件的输入数据。下面的示例使用一种称为JSX的类似XML的语法:
代码:
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同样足以根据静态和动态属性来定位和标识元素。
您可以在以下位置找到相关的讨论