1

ここのドキュメントの例を実行しようとしています。

私は 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 The name 'I' does not exist in the current context C:\Users\Shitij\Documents\Visual Studio 2013\Projects\UnitTestProject1\UnitTestProject1\UnitTest1.cs 16 20 UnitTestProject1

エラー 3 'UnitTestProject1.BingSearchPage' には 'Switch' の定義が含まれておらず、タイプ 'UnitTestProject1.BingSearchPage' の最初の引数を受け入れる拡張メソッド 'Switch' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?) C:\Users\Shitij\Documents\Visual Studio 2013\Projects\UnitTestProject1\UnitTestProject1\UnitTest1.cs 23 25 UnitTestProject1

ばかげた質問のように感じますが、私はそれにこだわっています。私が間違っていることは何ですか?プロパティ「I」はFluentTestクラスにあるようですが、PageObjectから派生したクラスでそれを使用するドキュメントはどうですか?

4

2 に答える 2

0

サイト atm のドキュメントに問題があります。本当にそれを修正する必要があります。汎用ビットが欠落しています!

に変更PageObjectPageObject<BingSearchResultsPage>I解決する必要があります。

于 2015-08-14T13:23:40.483 に答える
0

同じ問題がありましたが、これが私が思いついたものです:

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;
        }
    }
}
于 2015-09-10T15:07:14.700 に答える