0

次の 2 つのテストを検討してください。

Imports OpenQA.Selenium
Imports OpenQA.Selenium.Chrome

<TestClass()> Public Class DSCSLoginTest

<TestMethod()> Public Sub DSCSLoginLinkTest()
    Dim driver As New ChromeDriver()
    driver.Navigate.GoToUrl("http://myapp.com/landing.aspx")

    'click login
    driver.FindElementById("HeadLoginView_HeadLoginStatus").Click()
    Assert.AreEqual("http://myapp.com/Login.aspx", driver.Url)

    'fill in username
    driver.FindElementById("MainContent_Login1_txtUsername").SendKeys("user")

    'fill in password
    driver.FindElementById("MainContent_Login1_Password").SendKeys("pass")

    'click login
    driver.FindElementById("MainContent_Login1_LoginButton").Click()

    'test correct page
    Assert.AreEqual("http://myapp.com/loginok.aspx", driver.Url)

    'test correct title
    Dim title As String = driver.FindElementById("HeadContent_lblHeader").Text()
    Assert.AreEqual("Welcome to MyApp", title)
End Sub

<TestMethod()> Public Sub DSCSCantLoginWithoutPassword()
    Dim driver As New ChromeDriver()
    driver.Navigate.GoToUrl("http://myapp.com/landing.aspx")

    'click login
    driver.FindElementById("HeadLoginView_HeadLoginStatus").Click()
    Assert.AreEqual("http://myapp.com/Login.aspx", driver.Url)

    'fill in username
    driver.FindElementById("MainContent_Login1_txtUsername").SendKeys("user")

    'fill in password
    driver.FindElementById("MainContent_Login1_Password").SendKeys("")

    'click login
    driver.FindElementById("MainContent_Login1_LoginButton").Click()

    'test correct page
    Assert.AreEqual("http://myapp.com/Login.aspx", driver.Url)

    'test error recognition
    Dim validationResponse As String = driver.FindElementById("MainContent_Login1_PasswordRequired").Text
    Assert.AreEqual("*", validationResponse)
End Sub
End Class

ログイン部分へのブラウジングが重複していることが分かります。ユーザーが最初にログインすることに依存するテストがさらに増えるので、理想的には、これを別のクラスにリファクタリングして、login() や loginAsAdmin() などを最初に呼び出せるようにしたいので、保持する必要はありません。繰り返します。

もちろん、これらのテストは完璧ではありません。私がユーザーのためにデータベース内のデータに依存しているという事実はすでに臭いですが、これらはレガシープロジェクトに組み込まれているテストであり、ある意味では学術的な演習です.

理想的には、次のようなものが必要です。

login() 

ログインできるように十分にカプセル化するには、次のようにします。

Dim driver As New ChromeDriver()
    driver.Navigate.GoToUrl("http://myapp.com/landing.aspx")

    'click login
    driver.FindElementById("HeadLoginView_HeadLoginStatus").Click()

    'fill in username
    driver.FindElementById("MainContent_Login1_txtUsername").SendKeys("user")

    'fill in password
    driver.FindElementById("MainContent_Login1_Password").SendKeys("pass")

    'click login
    driver.FindElementById("MainContent_Login1_LoginButton").Click()

End Sub

誰かが私がこれについてどうやって行くことができるかを概説できますか? ありがとう。

4

1 に答える 1