我正在尝试将webdriverIO脚本转换为剧作家脚本。两者都是JavaScript。我想知道你们中是否有人转换过这种类型的项目,是否有你遇到的任何转换器项目?我已经开始手动翻译剧作家了。如果可能的话我在找一条快捷的路
bzzcjhmw1#
您必须手动执行此操作,因为WDIO(Selenium)具有不同的代码风格。只有人偶师看起来差不多。检查https://playwright.dev/docs/protractor,因为它更接近wdio。
kxkpmulp2#
不是也是。不-至少我不知道有什么东西会自动为你转换它。是的-你可以用正确的策略reuse大量的代码。我是谁?-我是最近成功地将一个大型(5000+测试)框架从Protractor迁移到剧作家的人。以下是我学到的教训:
reuse
这是最重要的。只要新的和旧的框架用JavaScript或TypeScript实现,我们基本上处于同一个生态系统中。
只要新旧框架都生活在nodejs生态系统中,所有使用的外部节点模块都可以按原样重复使用。
只要你使用任何标准的测试框架(Mocha/Jasmine/Jest)来进行测试脚本,你几乎可以使用它as is-如果你只是在脚本中调用页面对象方法,那么你的代码就像它应该是隐藏和封装在页面对象中的那样。
as is
无论你使用哪种框架/库/语言/工具,它们都是相同的,可以按原样使用,因为它们是独立的。
这是大多数更改可能发生的地方,甚至可以在一定程度上避免,如果您已经在库函数上实现了自定义 Package 函数以隐藏实现细节。
同样,这取决于在多层中抽象出代码的优雅和干净程度,以最低层中的更改最小化,而不涉及更高层。
同样,通过正确的策略,它也可以以Json/xml/csv/text数据的形式与框架完全隔离,并可以根据需要输入测试脚本。只要正确实现,大部分都可以按原样重复使用。
这不是一个大问题,因为它只是一次,没有太多的代码需要更改。从这一点出发的关键是--从一开始就使用modular的方法设计你的框架,并在多层中使用abstract,每个组件/类之间只有loosely coupled,这样任何部分都可以很容易地被替换/更新,而不需要affecting整个系统。希望能帮上忙。
modular
abstract
loosely coupled
affecting
2条答案
按热度按时间bzzcjhmw1#
您必须手动执行此操作,因为WDIO(Selenium)具有不同的代码风格。只有人偶师看起来差不多。
检查https://playwright.dev/docs/protractor,因为它更接近wdio。
kxkpmulp2#
不是也是。
不-至少我不知道有什么东西会自动为你转换它。
是的-你可以用正确的策略
reuse
大量的代码。我是谁?-我是最近成功地将一个大型(5000+测试)框架从Protractor迁移到剧作家的人。
以下是我学到的教训:
语言:
这是最重要的。只要新的和旧的框架用JavaScript或TypeScript实现,我们基本上处于同一个生态系统中。
NodeJS:
只要新旧框架都生活在nodejs生态系统中,所有使用的外部节点模块都可以按原样重复使用。
测试脚本:
只要你使用任何标准的测试框架(Mocha/Jasmine/Jest)来进行测试脚本,你几乎可以使用它
as is
-如果你只是在脚本中调用页面对象方法,那么你的代码就像它应该是隐藏和封装在页面对象中的那样。对象定位器(Css/Xpath):
无论你使用哪种框架/库/语言/工具,它们都是相同的,可以按原样使用,因为它们是独立的。
页面对象方法:
这是大多数更改可能发生的地方,甚至可以在一定程度上避免,如果您已经在库函数上实现了自定义 Package 函数以隐藏实现细节。
实用/支持函数
同样,这取决于在多层中抽象出代码的优雅和干净程度,以最低层中的更改最小化,而不涉及更高层。
测试数据:
同样,通过正确的策略,它也可以以Json/xml/csv/text数据的形式与框架完全隔离,并可以根据需要输入测试脚本。只要正确实现,大部分都可以按原样重复使用。
配置:
这不是一个大问题,因为它只是一次,没有太多的代码需要更改。
从这一点出发的关键是--从一开始就使用
modular
的方法设计你的框架,并在多层中使用abstract
,每个组件/类之间只有loosely coupled
,这样任何部分都可以很容易地被替换/更新,而不需要affecting
整个系统。希望能帮上忙。