How to verify the text of labels associated with inputs.
There is a page with input elements. You need to verify the text of labels associated with inputs.
<div class="form-group">
<label for="first-name">First Name</label>
<input type="text" class="form-control" id="first-name">
</div>
<div class="form-group">
<label for="last-name">Last Name</label>
<input type="text" class="form-control" id="last-name">
</div>
To be able to manipulate labels of controls you just need to add a property
of LabelList<_> type to your page object with any name, preferably Labels.
using Atata;
namespace SampleApp.UITests
{
using _ = SomePage;
public class SomePage : Page<_>
{
[FindById]
public TextInput<_> FirstName { get; private set; }
[FindById]
public TextInput<_> LastName { get; private set; }
public LabelList<_> Labels { get; private set; }
}
}
Note that LabelList<TOwner> gets a Label<TOwner> for particular control using its element id attribute that equals the for attribute of <label> element.
If there is no for/id association between label and control LabelList<TOwner> will not be able to find such label and
you may need to implement custom analogue of LabelList<TOwner> (check source file of its implementation).
Go.To<SomePage>()
.Labels[x => x.FirstName].Should.Equal("First Name")
.Labels[x => x.LastName].Should.Equal("Last Name")
// Or just verify the labels without considering association to inputs:
.Labels.Should.Contain("First Name", "Last Name");
Also for specific pointwise label manipulation it’s always possible to declare and use individual Label<TOwner> properties.