...

Source file src/github.com/playwright-community/playwright-go/tests/locator_test.go

Documentation: github.com/playwright-community/playwright-go/tests

     1  package playwright_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/playwright-community/playwright-go"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestLocatorAllInnerTexts(t *testing.T) {
    11  	BeforeEach(t)
    12  	defer AfterEach(t)
    13  	_, err := page.Goto(server.EMPTY_PAGE)
    14  	require.NoError(t, err)
    15  	require.NoError(t, page.SetContent(`<div>A</div><div>B</div><div>C</div>`))
    16  
    17  	locator, err := page.Locator("div")
    18  	require.NoError(t, err)
    19  	innerHTML, err := locator.AllInnerTexts()
    20  	require.NoError(t, err)
    21  	require.ElementsMatch(t, []string{"A", "B", "C"}, innerHTML)
    22  }
    23  
    24  func TestLocatorAllTextContents(t *testing.T) {
    25  	BeforeEach(t)
    26  	defer AfterEach(t)
    27  	_, err := page.Goto(server.EMPTY_PAGE)
    28  	require.NoError(t, err)
    29  	require.NoError(t, page.SetContent(`<div>A</div><div>B</div><div>C</div>`))
    30  
    31  	locator, err := page.Locator("div")
    32  	require.NoError(t, err)
    33  	innerHTML, err := locator.AllTextContents()
    34  	require.NoError(t, err)
    35  	require.ElementsMatch(t, []string{"A", "B", "C"}, innerHTML)
    36  }
    37  
    38  func TestLocatorFill(t *testing.T) {
    39  	BeforeEach(t)
    40  	defer AfterEach(t)
    41  	_, err := page.Goto(server.PREFIX + "/dom.html")
    42  	require.NoError(t, err)
    43  
    44  	locator, err := page.Locator("#input")
    45  	require.NoError(t, err)
    46  	require.NoError(t, locator.Fill("input value"))
    47  	result, err := locator.InputValue()
    48  	require.NoError(t, err)
    49  	require.Equal(t, "input value", result)
    50  }
    51  
    52  func TestLocatorGetAttribute(t *testing.T) {
    53  	BeforeEach(t)
    54  	defer AfterEach(t)
    55  	_, err := page.Goto(server.PREFIX + "/dom.html")
    56  	require.NoError(t, err)
    57  
    58  	locator, err := page.Locator("#outer")
    59  	require.NoError(t, err)
    60  	result, err := locator.GetAttribute("name")
    61  	require.NoError(t, err)
    62  	require.Equal(t, "value", result)
    63  	result, err = locator.GetAttribute("foo")
    64  	require.NoError(t, err)
    65  	require.Empty(t, result)
    66  }
    67  
    68  func TestLocatorInnerHTML(t *testing.T) {
    69  	BeforeEach(t)
    70  	defer AfterEach(t)
    71  	_, err := page.Goto(server.PREFIX + "/dom.html")
    72  	require.NoError(t, err)
    73  
    74  	locator, err := page.Locator("#outer")
    75  	require.NoError(t, err)
    76  	result, err := locator.InnerHTML()
    77  	require.NoError(t, err)
    78  	require.Equal(t, "<div id=\"inner\">Text,\nmore text</div>", result)
    79  }
    80  
    81  func TestLocatorInnerText(t *testing.T) {
    82  	BeforeEach(t)
    83  	defer AfterEach(t)
    84  	_, err := page.Goto(server.PREFIX + "/dom.html")
    85  	require.NoError(t, err)
    86  
    87  	locator, err := page.Locator("#inner")
    88  	require.NoError(t, err)
    89  	result, err := locator.InnerHTML()
    90  	require.NoError(t, err)
    91  	require.Equal(t, "Text,\nmore text", result)
    92  }
    93  
    94  func TestLocatorInputValue(t *testing.T) {
    95  	BeforeEach(t)
    96  	defer AfterEach(t)
    97  	_, err := page.Goto(server.PREFIX + "/dom.html")
    98  	require.NoError(t, err)
    99  	require.NoError(t, page.Fill("#input", "input value"))
   100  
   101  	locator, err := page.Locator("#input")
   102  	require.NoError(t, err)
   103  	result, err := locator.InputValue()
   104  	require.NoError(t, err)
   105  	require.Equal(t, "input value", result)
   106  }
   107  
   108  func TestLocatorIsChecked(t *testing.T) {
   109  	BeforeEach(t)
   110  	defer AfterEach(t)
   111  	_, err := page.Goto(server.EMPTY_PAGE)
   112  	require.NoError(t, err)
   113  	require.NoError(t, page.SetContent("<input type='checkbox' checked><div>Not a checkbox</div>"))
   114  
   115  	locator, err := page.Locator("input")
   116  	require.NoError(t, err)
   117  	result, err := locator.IsChecked()
   118  	require.NoError(t, err)
   119  	require.True(t, result)
   120  }
   121  
   122  func TestLocatorIsDisabled(t *testing.T) {
   123  	BeforeEach(t)
   124  	defer AfterEach(t)
   125  	_, err := page.Goto(server.EMPTY_PAGE)
   126  	require.NoError(t, err)
   127  	err = page.SetContent(`
   128  	<button disabled>button1</button>
   129  	<button>button2</button>
   130  	<div>div</div>
   131  	`)
   132  	require.NoError(t, err)
   133  
   134  	locator, err := page.Locator("div")
   135  	require.NoError(t, err)
   136  	result, err := locator.IsDisabled()
   137  	require.NoError(t, err)
   138  	require.False(t, result)
   139  
   140  	locator, err = page.Locator(":text(\"button1\")")
   141  	require.NoError(t, err)
   142  	result, err = locator.IsDisabled()
   143  	require.NoError(t, err)
   144  	require.True(t, result)
   145  
   146  	locator, err = page.Locator(":text(\"button2\")")
   147  	require.NoError(t, err)
   148  	result, err = locator.IsDisabled()
   149  	require.NoError(t, err)
   150  	require.False(t, result)
   151  }
   152  
   153  func TestLocatorIsEditable(t *testing.T) {
   154  	BeforeEach(t)
   155  	defer AfterEach(t)
   156  	_, err := page.Goto(server.EMPTY_PAGE)
   157  	require.NoError(t, err)
   158  	err = page.SetContent(`<input id=input1 disabled><textarea></textarea><input id=input2>
   159  	`)
   160  	require.NoError(t, err)
   161  
   162  	locator, err := page.Locator("#input1")
   163  	require.NoError(t, err)
   164  	result, err := locator.IsEditable()
   165  	require.NoError(t, err)
   166  	require.False(t, result)
   167  
   168  	locator, err = page.Locator("#input2")
   169  	require.NoError(t, err)
   170  	result, err = locator.IsEditable()
   171  	require.NoError(t, err)
   172  	require.True(t, result)
   173  
   174  	locator, err = page.Locator("textarea")
   175  	require.NoError(t, err)
   176  	result, err = locator.IsEditable()
   177  	require.NoError(t, err)
   178  	require.True(t, result)
   179  }
   180  
   181  func TestLocatorIsEnabled(t *testing.T) {
   182  	BeforeEach(t)
   183  	defer AfterEach(t)
   184  	_, err := page.Goto(server.EMPTY_PAGE)
   185  	require.NoError(t, err)
   186  	err = page.SetContent(`
   187  	<button disabled>button1</button>
   188  	<button>button2</button>
   189  	<div>div</div>
   190  	`)
   191  	require.NoError(t, err)
   192  
   193  	locator, err := page.Locator("div")
   194  	require.NoError(t, err)
   195  	result, err := locator.IsEnabled()
   196  	require.NoError(t, err)
   197  	require.True(t, result)
   198  
   199  	locator, err = page.Locator(":text(\"button1\")")
   200  	require.NoError(t, err)
   201  	result, err = locator.IsEnabled()
   202  	require.NoError(t, err)
   203  	require.False(t, result)
   204  
   205  	locator, err = page.Locator(":text(\"button2\")")
   206  	require.NoError(t, err)
   207  	result, err = locator.IsEnabled()
   208  	require.NoError(t, err)
   209  	require.True(t, result)
   210  }
   211  
   212  func TestLocatorIsHidden(t *testing.T) {
   213  	BeforeEach(t)
   214  	defer AfterEach(t)
   215  	_, err := page.Goto(server.EMPTY_PAGE)
   216  	require.NoError(t, err)
   217  	err = page.SetContent(`
   218  	<details>
   219  		<summary>click to open</summary>
   220  		<ul>
   221  			<li>hidden item 1</li>
   222  			<li>hidden item 2</li>
   223  			<li>hidden item 3</li>
   224  		</ul>
   225  	</details>`)
   226  	require.NoError(t, err)
   227  
   228  	locator, err := page.Locator("ul")
   229  	require.NoError(t, err)
   230  	result, err := locator.IsHidden()
   231  	require.NoError(t, err)
   232  	require.True(t, result)
   233  
   234  	locator, err = page.Locator("summary")
   235  	require.NoError(t, err)
   236  	result, err = locator.IsHidden()
   237  	require.NoError(t, err)
   238  	require.False(t, result)
   239  }
   240  
   241  func TestLocatorIsVisible(t *testing.T) {
   242  	BeforeEach(t)
   243  	defer AfterEach(t)
   244  	_, err := page.Goto(server.EMPTY_PAGE)
   245  	require.NoError(t, err)
   246  	err = page.SetContent(`
   247  	<details>
   248  		<summary>click to open</summary>
   249  		<ul>
   250  			<li>hidden item 1</li>
   251  			<li>hidden item 2</li>
   252  			<li>hidden item 3</li>
   253  		</ul>
   254  	</details>`)
   255  	require.NoError(t, err)
   256  
   257  	locator, err := page.Locator("ul")
   258  	require.NoError(t, err)
   259  	result, err := locator.IsVisible()
   260  	require.NoError(t, err)
   261  	require.False(t, result)
   262  
   263  	locator, err = page.Locator("summary")
   264  	require.NoError(t, err)
   265  	result, err = locator.IsVisible()
   266  	require.NoError(t, err)
   267  	require.True(t, result)
   268  }
   269  
   270  func TestLocatorSelectOption(t *testing.T) {
   271  	BeforeEach(t)
   272  	defer AfterEach(t)
   273  	_, err := page.Goto(server.PREFIX + "/dom.html")
   274  	require.NoError(t, err)
   275  
   276  	locator, err := page.Locator("#select")
   277  	require.NoError(t, err)
   278  	values := []string{"foo"}
   279  	result, err := locator.SelectOption(playwright.SelectOptionValues{Values: &values})
   280  	require.NoError(t, err)
   281  	require.ElementsMatch(t, []string{"foo"}, result)
   282  }
   283  
   284  func TestLocatorTextContent(t *testing.T) {
   285  	BeforeEach(t)
   286  	defer AfterEach(t)
   287  	_, err := page.Goto(server.PREFIX + "/dom.html")
   288  	require.NoError(t, err)
   289  
   290  	locator, err := page.Locator("#inner")
   291  	require.NoError(t, err)
   292  	result, err := locator.TextContent()
   293  	require.NoError(t, err)
   294  	require.Equal(t, "Text,\nmore text", result)
   295  }
   296  

View as plain text