【问题标题】:Want to execute single step in selenium web driver想要在 selenium web 驱动程序中执行单步
【发布时间】:2013-12-16 08:01:24
【问题描述】:

我正在使用 selenium webdriver 来实现 web 应用程序的自动化。(我正在使用 eclipse) 在我的测试中,我编写了代码以通过凭据登录页面,然后单击一些链接并转到特定页面。现在在该页面上,我正在通过下拉列表填充字段,但它不起作用。

所以我的问题是如果我更改我的代码以使用下拉菜单,然后再次测试这个我需要从开始运行测试用例。再次意味着它将加载登录页面并通过各种链接然后到达那个页面。 所以不能像我们在 selenium IDE 中那样直接执行那些步骤???

从头开始一次又一次地执行真的很浪费我的时间......??

有什么办法/捷径吗?请给我建议。

谢谢

【问题讨论】:

  • 我的 Eclipse 中没有安装任何 selenium 服务器
  • 对于 Eclipse,我认为您没有任何选择。它总是从第 1 步开始运行。
  • 如果没有选项,那么用webdriver做自动化真的很难。我不敢相信......
  • 只是一个想法。测试用例应该尽可能短,以便只测试他们应该做的事情。我正在使用 Python 编写测试,因此我可以使用带有健康 webdriver 实例的 Python 解释器检查我的更改是否正常
  • 顺便说一句,尝试编写一些“棘手的登录”方法。在我的测试项目中,我有一个单独的登录测试,在其他需要登录用户的情况下,我使用 cookie 绕过登录表单

标签: eclipse selenium selenium-webdriver


【解决方案1】:

Selenium IDE 是在浏览器中的,你可以在任何步骤运行它是正常的。但如果您的 cookie 已过期,则必须重新进行身份验证。这不是 Selenium 的问题,而是网站的工作方式。 在你的测试中,如果你的案例涉及到一个过程,你总是必须从头开始,除非你设法很好地控制你的 cookie。

例如,您可以随时使用HTTPClient 对要连接的网站进行快速 http 调用,只是为了取回 cookie,然后在 webdriver 中使用类似

的东西
driver.manage().addCookie(new Cookie("foo", "bar", "www.domain.com", "/", null));

然后转到您需要的页面。请注意,此解决方案仅解决了 Authent 问题,不控制测试的 Web 应用程序的状态(之前发布的数据等...)。

在我们公司,我们广泛使用硒,并且有很多依赖于它的测试,因此我们知道一些问题,并且我们知道它可能导致的挫败感。

我们使用完全不同的解决方案来提高测试效率。 事实上,我们正在使用基于Groovy Shell 的解决方案,它允许我们在开发测试时来回切换并保持浏览器打开。 Groovy 是一种 JVM 脚本语言,对于 Java 开发人员来说非常容易(几乎所有 Java 代码都是有效的 Groovy 代码),而且它非常动态。

因此,您可以下载 groovy,运行 groovy shell(groovysh 是命令),然后您可以逐行启动并与浏览器交互,同时您的编写代码会保存到缓冲区中。完成测试后,导出代码并将其放入 Eclipse。它比每次从头开始重新启动要快。以 selenium 开头的魔法线是

groovy.grape.Grape.grab(autoDownload: true, group : 'org.seleniumhq.selenium', module : 'selenium-firefox-driver', version : '2.37.1')
import org.openqa.selenium.*
import org.openqa.selenium.firefox.*
driver = new FirefoxDriver()
driver.get("http://my-website.com")

从此时起,浏览器窗口始终打开,您可以直接使用 groovy(或 java)进行开发。它就像一个 selenium-ide,但在 groovy 中,并且可以集成到您的开发工作流程中(但还有一些工作要做) 此示例适用于 Firefox(您可能已经猜到了 ;-)),但您可以随意调整它。我们由此构建了一堆工具来快速迭代地开发我们的测试。我们发现这是一个伟大的救世主。

【讨论】:

    【解决方案2】:

    在您描述的情况下,测试将始终返回到第 1 步,因此,您需要从头开始执行您的自动化套件。

    未来提示,将您的测试用例分成较短的测试用例(正如 Alexander 建议的那样),这样您就可以在需要时轻松地仅使用与您当前工作的模块相关的所需用例。

    【讨论】:

      【解决方案3】:

      没有什么不同的答案......从第一步开始......
      我的好心建议是,在 Eclipse 中使用一个断点,您可能会在该断点处猜测失败......并在调试模式下运行 Eclipse 程序 vth 连续按 F6 键。
      执行将减慢,显示将是逐步模式,您可以轻松跟踪代码中断的确切位置...

      【讨论】:

        猜你喜欢
        • 2018-01-22
        • 1970-01-01
        • 2019-06-09
        • 1970-01-01
        • 2020-12-19
        • 2023-03-07
        • 2016-09-29
        • 1970-01-01
        • 2017-08-15
        相关资源
        最近更新 更多