javascript - 在 Selenium 测试期间访问 redux 状态
问题描述
在这里分享食谱,
对于我的应用程序,想要使用 Selenium 自动化用户 PoV 测试,并告诉自己能够通过 Selenium 读取状态和发送 redux 操作会很棒。
Selenium 由 NodeJ 驱动。
在节点 JS 中向应用发送 Redux 操作:
const state = await driver
.executeAsyncScript(
"window.stCap({action: arguments[0], cb: arguments[arguments.length - 1]});",
{ type: "global_ST_CAP_GET" }
)
- Arg0 是一个 redux 操作(这里命名为“global_ST_CAP_GET”)
- arg1是driver.executeAsyncScript自动添加的,是回调函数
在其中一个帮助文件中:
let globalActionRequest;
export const globalActionRequestSet = ar => {
globalActionRequest = ar;
};
window.stCap = function({ action, cb }) {
globalActionRequest({
...action,
cb
});
};
- stCap 调用函数 set
globalActionRequest
将事件发送到 redux 中间件
在最顶级的 react 组件初始化之一(能够“进入”redux 世界......),放入globalActionRequest
由提供的函数mapDispatchToProps
import { globalActionRequestSet } from "...appropriate file..."
class ... extends React.component {
constructor(props) {
super(props)
globalActionRequestSet(props.actionRequest)
}
...
}
mapDispatchToProps = {
actionRequest: action => action
}
- 在这里,驱动 Selenium 的代码能够将任何 redux 操作发送到您的应用程序。
最后,在“sagas”文件中,执行一个动作来发回状态(稍后在驱动 selenium 的代码中使用)
const global_ST_CAP_GET = function* ({cb}) {
const state = yield sagas.select(state => state);
cb(state);
}
// to add into root sagas
fork(function*() {
yield takeEvery("global_ST_CAP_GET", global_ST_CAP_GET);
})
使用这个技巧,可以使用一个工具(selenium)来测试应用程序的外部和内部(通过发送操作和读取 redux 状态)。
希望你会喜欢它,很高兴听到任何建议
解决方案
推荐阅读
- javascript - 期望字符串(用于内置组件)或类/函数(用于复合组件)但未定义
- python - 为什么在使用 pandas 读取 csv 时会自动删除前面的引号?
- c# - 我可以异步运行同步代码以获得性能吗?
- php - 将响应 curl 函数从字符串转换为对象或数组 PHP
- ios - 麦克风和扬声器播放时按钮无响应
- python - Python 和 Matlab 的结果略有不同
- django - Django 序列化器字符串浮动
- ui-automation - UIATable 操作 GetCellValue 引发错误“由于从 UI 自动化继承的 API 调用缺失或损坏而失败”
- python - 在python中重命名多个文件并在前面计数
- javascript - 如何更改amcharts中放大/缩小和主页按钮的形状?我在 amcharts 库中没有找到任何解决方案。请让我进入解决方案