# Screen

`device.screen`: elements of any app or the system UI. Guide:
[App or screen](../../guide/app-or-screen.md).

## <kbd>class</kbd> `Screen`
Whatever is visible on a device: every window, of any app or the system UI. 

``device.screen`` adds no package predicate, so a selector matches in any window: a permission dialog, the notification shade, a second app. Use ``device.app(package_name)`` when the node must belong to one app. 

A node another window (the keyboard, a dialog) covers completely is not found; a gesture on a node it covers partly, with the touch point underneath, fails with ``CommandError`` ``NOT_INTERACTABLE`` / ``OBSCURED`` before any input. 

**Example::**
 

 device.screen.wait(text("Allow")).visible()  device.screen.element(text("Allow")).tap() 

### <kbd>method</kbd> `Screen.__init__`

```python
__init__(device: 'Device')
```

---

### <kbd>method</kbd> `Screen.element`

```python
element(selector: 'Selector') → Element
```

A lazy element: ``selector`` as is, matched in every visible window. Nothing is looked up until an action or query runs. 

---

### <kbd>method</kbd> `Screen.wait`

```python
wait(selector: 'Selector', timeout: 'float | None' = None) → ElementWait
```

A wait on ``selector`` in every visible window; ``timeout`` (seconds) defaults to ``device.timeouts.wait``. 

