gpt4 book ai didi

javascript - 使用 javascript 开发 Selenium Webdriver 脚本

转载 作者:行者123 更新时间:2023-11-28 18:38:31 24 4
gpt4 key购买 nike

我们可以仅使用javascript开发selenium webdriver脚本吗?如果是的话,使用 javascript 而不是使用 java 或 C# 或任何语言有什么优势?在什么情况下我们应该考虑 Javascript 而不是其他语言?

谢谢。

最佳答案

有许多 Javascript 框架是在 JS selenium 绑定(bind)之上编写的(webdriver.io、nightwatch、protractor)。

JS 相对于 C# 或 Java 的优势

  • 减少样板
  • 用于构建自动机的 Grunt 或 gulp > maven、msbuild 甚至 gradle
  • 与前端框架( Protractor )更好地集成
  • JS 通常用于所有 Web 项目,因此它可以作为所有开发人员都能理解的通用语言。
  • 用于依赖项管理的 NPM 及其中的大量库可以大大减少您的工作量。

缺点

  • Java 绑定(bind)有更多可用于调试问题的文档/资源。
  • 速度(我发现在 Java 中使用 AjaxPageFactory 比 Protractor 快很多,而且我还没有在 Javascript 中找到等效的工具)
  • 来自 Java 或 C# 的 Promise 可能会很复杂。
  • 目前不支持 Microsoft Edge。

就具体用例而言,如果您在前端大量使用 Angular,Protractor 是专门为 Angular 功能测试而设计的工具,应该在 C# 或 Java 上使用。 Protractor 可以与 React.js 等框架一起使用,但它不是为此设计的,您可能需要包含大量 waitForElement 类型代码。

我发现 Protractor 的一些优点特别是用于更全面的多浏览器测试的配置。要在 Java 或 C# 中进行设置涉及大量配置,而在 Protractor 中,只需对 conf.js 文件进行两处更改即可。我还发现自己使用了很多 grunt 插件来设置和拆除我的测试,这些插件配置起来非常简单。

我建议使用 Babel.js,这样您就可以利用 es2015 JS 语法,由于包含类,该语法使从 Java 或 C# 的转换变得更简单,而且我个人发现它对于编写页面对象更加清晰。

需要注意的一件事是,Selenium for Java 和 C# 中的许多简单操作在 Javascript 中更为复杂,因为大多数操作都会返回 Promise。

Java版本

int previousNumberOfItems = driver.findElements(By.className(".item")).size();
driver.findElements(By.cssSelector(".addItemButton")).click();
int currentNumberOfItems = driver.findElements(By.className(".item")).size();
assert.AssertTrue(currentNumberOfItems .contentEquals(previousNumberOfItems +1));

Protractor (JS)版本

element.all(by.className(".item")).count().then(function(number){
element(by.css(".addItemButton")).click();
expect(element.all(by.className(".item")).count()).toBe(number+1);
});

我不能真正代表 nightwatch 或 webdriver.io,它们可能更适合使用 Javascript 测试非 Angular 应用程序。

关于javascript - 使用 javascript 开发 Selenium Webdriver 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36550369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com