Check the position of the XCUIElement on screen while testing iOS Application using XCTest

9k views Asked by At

I am testing an iOS Application and currently I am checking the existence of a particular XCUIElement using isHittable.

I wanted to know if we can also check the position of the XCUIElement on the view. For instance, if we have a button in the bottom right corner of the view, can we check if it is actually in the bottom right corner using XCTest framework?

I had a look at the Apple Documentation for XCTest framework but did not get any clue. Any help will be greatly appreciated.

2

There are 2 answers

2
Oletha On BEST ANSWER

XCUIElement has a property frame which you can use to find the coordinates of the element in question.

let button = XCUIApplication().buttons["someButton"]
let frame = button.frame
let xPosition = frame.origin.x
let yPosition = frame.origin.y

There are other ways of retrieving different points relative to the frame, which is a CGRect, such as midX and midY, depending on how you want to assert the position of the element.

You should be aware that XCTest is a functional UI testing framework, and if you are using it for asserting the position of an element, the position will probably be different per device/simulator which may make your tests brittle.

0
Coder-256 On

Get the bounds of the element using:

let bounds = viewToTest.convert(viewToTest.bounds, to: nil)

Then check if the bounds are correct or not. Note that the bounds are relative to the top-left corner of the screen when held in portrait.