【问题标题】:Selenium WebDriver Recorder for PageObject pattern用于 PageObject 模式的 Selenium WebDriver Recorder
【发布时间】:2013-06-03 10:05:48
【问题描述】:

我知道 Selenium IDE 和 Selenium Builder 作为 Firefox 插件来记录操作并导出它们,例如作为 C# 代码。

但是否还有一个工具可以帮助您按照 PageObject 模式创建 Selenium (2) WebDriver 测试代码?我知道这会很困难,因为程序必须知道应该如何实现抽象。

据我所知,这样的工具不存在吗?但是,在工具支持下创建 Selenium WebDriver PageObject-Code 的最佳方法是什么

也许使用 Selenium 构建器只是通过 id、类名等创建引用并在我的代码中手动实现它们?这可能比我自己决定用什么来精确识别元素要更快。但是为什么 Selenium Builder 的开发者要动态创建元素引用呢

IWebDriver wd = new RemoteWebDriver(DesiredCapabilities.Firefox());
wd.FindElement(By.Id("NameField")).Click();
wd.FindElement(By.Id("NameField")).Clear();

而不是 FindBy 属性?

[FindsBy(Using = "NameField")]
public IWebElement nameField;

元素可重用,代码更短。

【问题讨论】:

    标签: c# selenium-webdriver selenium-ide pageobjects


    【解决方案1】:

    在回答您的问题时,没有工具,我很高兴没有。人们过于依赖这些类型的工具。我还认为使用 Builder 或 IDE 为您完成这项工作不会更快。短期而言,是的,长期而言,绝对不是。

    虽然建造者在“发现”方面要聪明得多,但它仍然不够出色。 XPath 与 IDE 甚至 Firebug 和 Chrome 自己的开发者控制台一起失败了。

    手动为您服务。

    但是,如果您一心想要使用工具,那么请使用 Builder(只是因为它比 IDE 好一点)来构建您的代码。

    就“为什么”Builder 提出这种代码而言,这是因为它基本且简单。这些工具旨在为您提供有效的基本代码。不是最佳实践的花哨代码。这是您应该手动执行的操作。您可能会发现 IDE 提供的内容非常相似。

    任何试图出售这些工具作为自动化测试答案的人都是完全错误的。答案是给您的测试人员和开发人员足够的时间来协调一个体面的策略!

    没有工具可以准确地定义动态元素的定位策略。具有在每个页面点击时更改的 ID 的东西。那么你期望它做什么呢?它会举起双手,给你最好的机会。在这里您可以介入并节省时间并制定有效的定位策略 - 这是 IDE/Builder 将为您节省 短期 时间但您将花费 长期的地方- 期限 时间在它跌倒时修复它。

    【讨论】:

    • 我认为你的论点是正确的。但是你认为或者你知道那些从未编码过的人是否能够编写这样的 Selenium 测试?
    【解决方案2】:

    有这样的工具,我目前正在做这个开源项目:

    SWD Page Recorder

    Page Recorder 实际上完成了这个问题的工作。它允许在浏览器中记录 WebElements;在应用程序表单中调试/测试定位器并生成 PageObject 类的代码。

    SWD Recorder 旨在消除测试自动化过程中最无聊的手动操作:从网络浏览器中抓取定位器并将其手动转换为 FindsBy 属性的活动。

    Page Recorder 不会记录 PageObject 内部的步骤(动作),不知道会不会。我同意 Arran 的观点,即动作应该是手写的(并使用人类的智慧)。

    您可以通过上面的链接找到简短的说明和视频演示。此外,Unmesh 还发表了一篇很棒的博文,他是几本关于 Selenium 的热门书籍的作者:
    PageObject Generator Utility for Selenium WebDriver

    【讨论】:

      【解决方案3】:

      我听到了你的痛苦!为了避免完全相同的情况,我尝试创建一些非常有效的东西并且我非常成功,除了我的过程大大减慢了我的脚本执行速度。如果我能解决它,它就可以滚动了。点击here查看我的解决方案。我不确定是否有任何工具以及它们如何工作

      【讨论】:

        【解决方案4】:

        试试 Selenium Page Object Generator 一个 chrome 插件。 它非常简单,但是可以减少您手动创建 PO 所花费的时间。

        【讨论】:

          猜你喜欢
          • 2013-10-17
          • 1970-01-01
          • 2013-09-21
          • 2012-12-05
          • 1970-01-01
          • 2015-01-11
          • 1970-01-01
          • 1970-01-01
          • 2014-10-15
          相关资源
          最近更新 更多