gpt4 book ai didi

selenium - 如何将代码重用添加到我的 Selenium 测试中?

转载 作者:行者123 更新时间:2023-12-01 11:58:00 26 4
gpt4 key购买 nike

这是我正在处理的情况:

  • 在 Selenium 中构建测试
  • 让所有测试正确运行(在 Firefox 中)
  • 将所有测试导出到 MSTest(以便每个测试都可以在 IE、Chrome 和 FF 中运行)
  • 如果需要修改任何测试,请在 Selenium IDE 中进行编辑

所以这是一个非常单向的工作流程。但是,我现在想做更多的自动化。例如,我希望每个测试都在两个帐户中的每一个下运行。我遇到了维护问题。如果我有 6 个测试要在两个帐户下运行,突然间我需要在 Selenium IDE 测试中进行 12 个测试。编辑太多了。但是大量的代码是完全一样的。

如何在测试之间共享 Selenium 测试 block ?我是否应该第一次使用 Selenium IDE 开发测试然后再也不使用它(之后只在 VS 中进行编辑)?

最佳答案

从 IDE 导出后,Selenium 代码非常线性。

例如(忽略语法):

  someTestMethod() {
selenium.open("http://someLoginPage.com");
selenium.type("usernameField", "foo");
selenium.type("passwordField", "bar");
selenium.click("loginButton");
selenium.waitForPageToLoad("30000");
assertTrue(selenium.isTextPresent("Welcome * foo"));
}

这是登录页面。你的每一个测试都必须使用它。您应该将其重构为一个方法。

  someTestMethod(){
selenium.open("http://someLoginPage.com");
String username = "foo";
String password = "bar";
performLogin(username, password);
}

performLogin(String username, String password){
selenium.type("usernameField", username);
selenium.type("passwordField", password);
selenium.click("loginButton");
selenium.waitForPageToLoad("30000");
assertTrue(selenium.isTextPresent("Welcome * foo"));
}

performLogin() 方法不必与测试代码本身位于同一个文件中。您可以使用您的方法为它创建一个单独的类,并在您的测试之间共享它。

我们有对应于 UI 上某些功能的类。例如,我们有很多方法可以在我们的应用程序中进行搜索。所有帮助您使用搜索功能的方法都将在 SearchUtil 类中。

以类似的方式构建测试会给您带来以下优势:

  • 如果 UI 发生变化(字段的 ID),您将转到您的方法,更新 ID,然后就可以开始了
  • 如果您的逻辑流发生变化,您也只有一个地方可以更新
  • 测试您的更改是否有效,您只需运行其中一项测试来验证。所有其他测试都使用相同的代码,因此它应该可以工作。
  • 在您查看代码时表现力更多。使用命名良好的方法,您可以创建更易于阅读和理解的更高级别的抽象。
  • 灵活且可扩展! 可能性是无限的。此时你可以使用条件、循环、异常,你可以做你自己的报告等等……

This website是关于您正在努力完成的事情的极好资源。

祝你好运!

关于selenium - 如何将代码重用添加到我的 Selenium 测试中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4939601/

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