【问题标题】:How to organize tests and PageObject classes with FluentAutomation and MSTest (Cannot resolve symbol "I" error)如何使用 FluentAutomation 和 MSTest 组织测试和 PageObject 类(无法解析符号“I”错误)
【发布时间】:2015-08-12 22:55:39
【问题描述】:

我正在尝试运行文档 here 中的示例。

我正在使用带有 MSTest 的 Visual Studio,所以我稍微修改了代码,现在看起来像这样:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using FluentAutomation;
using FluentAutomation.Interfaces;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace UnitTestProject1
{
    public class BingSearchPage : PageObject
    {
        public BingSearchPage(FluentTest test)
            : base(test)
    {
        Url = "http://bing.com/";
        At = () => I.Expect.Exists(SearchInput); //Documentation says "At = () =>; I.Expect.Exists(SearchInput);" but I think that's a typo
    }

        public BingSearchResultsPage Search(string searchText)
        {
            I.Enter(searchText).In(SearchInput);
            I.Press("{ENTER}");
            return this.Switch();
        }

        private const string SearchInput = "input[title='Enter your search term']";
    }

    public class BingSearchResultsPage : PageObject
    {
        public BingSearchResultsPage(FluentTest test)
            : base(test)
        {
            At = () => I.Expect.Exists(SearchResultsContainer);
        }

        public BingSearchResultsPage FindResultUrl(string url)
        {
            I.Expect.Exists(string.Format(ResultUrlLink, url));
            return this;
        }

        private const string SearchResultsContainer = "#b_results";
        private const string ResultUrlLink = "a[href='{0}']";
    }

    [TestClass]
    public class UnitTest1 : FluentTest
    {
        public UnitTest1()
        {
            SeleniumWebDriver.Bootstrap(SeleniumWebDriver.Browser.Chrome);
        }

        [TestMethod]
        public void SearchForFluentAutomation()
        {
            new BingSearchPage(this)
                .Go()
                .Search("FluentAutomation")
                .FindResultUrl("http://fluent.stirno.com/blog/FluentAutomation-scriptcs/");
        }
    }
}

我收到如下错误:

错误 1 ​​'FluentAutomation.PageObject' 不包含构造函数 需要 1 个参数 C:\Users\Shitij\Documents\Visual Studio 2013\Projects\UnitTestProject1\UnitTestProject1\UnitTest1.cs 13 15 UnitTestProject1

错误 2 名称 'I' 不存在于当前 上下文 C:\Users\Shitij\Documents\Visual Studio 2013\Projects\UnitTestProject1\UnitTestProject1\UnitTest1.cs 16 20 UnitTestProject1

错误 3 'UnitTestProject1.BingSearchPage' 不包含 'Switch' 的定义并且没有扩展方法 'Switch' 接受 “UnitTestProject1.BingSearchPage”类型的第一个参数可以是 找到(您是否缺少 using 指令或程序集 参考?) C:\Users\Shitij\Documents\Visual Studio 2013\Projects\UnitTestProject1\UnitTestProject1\UnitTest1.cs 23 25 UnitTestProject1

感觉像一个愚蠢的问题,但我被困住了。知道我做错了什么吗?属性“I”似乎在 FluentTest 类中,那么文档如何在派生自 PageObject 的类中使用它?

【问题讨论】:

    标签: c# selenium selenium-webdriver fluentautomation


    【解决方案1】:

    站点 atm 上的文档存在问题。真的需要把它修好。缺少通用位!

    PageObject 更改为PageObject<BingSearchResultsPage>I 应该可以解决。

    【讨论】:

    • 谢谢! :D 实际上,我找到了一个 github 页面,其中有正确的工作示例。也许只是将其粘贴到文档中?
    【解决方案2】:

    遇到同样的问题,这是我想出的:

    using System;
    using FluentAutomation;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace HelloWorldTests
    {
        [TestClass]
        public class WithPageObjectTests : FluentTest
        {
            public WithPageObjectTests()
            {
                SeleniumWebDriver
                    .Bootstrap(SeleniumWebDriver.Browser.InternetExplorer);
            }
    
            [TestInitialize]
            public void TestInitialisze()
            {
                // Global wait timer
                Config.Settings.WaitUntilTimeout = TimeSpan.FromSeconds(5);
    
                Config.Settings.ScreenshotOnFailedAction = true;
                Config.Settings.ScreenshotOnFailedAssert = true;
                Config.Settings.ScreenshotOnFailedExpect = true;
            }
    
            [TestMethod]
            public void SearchForFluentAutomation()
            {
                new BingSearchPage(this)
                    .Go()
                    .Search("FluentAutomation")
                    .FindResultUrl("http://fluent.stirno.com/blog/FluentAutomation-scriptcs/");
            }
        }
    
        /// <summary>
        /// Page model
        /// </summary>
        public class BingSearchPage : PageObject<BingSearchPage>
        {
            //private const string SearchInput = "input[title='Enter your search term']";
            private const string SearchInput = "#sb_form_q";
    
            public BingSearchPage(FluentTest test)
                : base(test)
            {
                Url = "http://bing.com/";
                At = () => I.Expect.Exists(SearchInput);
            }
    
            public BingSearchResultsPage Search(string searchText)
            {
                I.Enter(searchText).In(SearchInput);
                I.Press("{ENTER}");
                return this.Switch<BingSearchResultsPage>();
            }
        }
    
        /// <summary>
        /// Page model
        /// </summary>
        public class BingSearchResultsPage : PageObject<BingSearchResultsPage>
        {
            private const string SearchResultsContainer = "#b_results";
            private const string ResultUrlLink = "a[href='{0}']";
    
            public BingSearchResultsPage(FluentTest test)
                : base(test)
            {
                At = () => I.Expect.Exists(SearchResultsContainer);
            }
    
            public BingSearchResultsPage FindResultUrl(string url)
            {
                I.Expect.Exists(string.Format(ResultUrlLink, url));
                return this;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 2018-03-07
      • 2014-10-09
      相关资源
      最近更新 更多