Basic Navigation¶
This guide covers the fundamentals of navigating web pages with Oryn.
Navigating to Pages¶
Using goto¶
Navigate to any URL:
The protocol (https://) is automatically added if omitted.
Full URLs¶
You can specify the full URL:
URL Normalization Note¶
goto adds https:// when protocol is omitted:
Relative navigation like goto /about is not currently resolved against the active page URL in the unified translation path.
History Navigation¶
Go Back¶
Go Forward¶
Refresh¶
refresh --hard syntax:
--hard is parsed, but hard/soft distinction is not currently applied by executor/backend wiring.
Observing Pages¶
The observe command (alias: scan) is fundamental to understanding what's on a page.
Basic Observation¶
> observe
@ github.com/login "Sign in to GitHub"
[1] input/email "Username or email address" {required}
[2] input/password "Password" {required}
[3] link "Forgot password?"
[4] button/submit "Sign in" {primary}
[5] link "Create an account"
# patterns
- login_form: email=[1] password=[2] submit=[4]
Understanding the Output¶
Page Header:
Shows the current URL and page title.Elements:
-[1] — Numeric ID for targeting
- input — Element type
- email — Semantic role
- "Username..." — Visible text/label
- {required} — State modifier
Patterns:
Detected UI patterns with element references.Observation Options¶
Full details:
> observe --full
@ github.com/login "Sign in to GitHub"
[1] input/email "Username or email address" {required}
selector: #login_field
xpath: //input[@id='login_field']
rect: x=450 y=200 w=300 h=40
Filter by proximity:
observe --minimal is parsed, but output is currently close to standard observe unless backend/scanner behavior changes.
Clicking Elements¶
By ID¶
The fastest and most precise method:
By Text¶
More robust across page changes:
Text matching is case-insensitive and uses partial matching by default.
By Role¶
For semantic targeting:
Click Options¶
Double-click:
Right-click:
Force click (even if covered):
Scrolling¶
Direction Scrolling¶
Page Scrolling¶
Scroll to Element¶
Getting Page Information¶
Current URL¶
Page Title¶
Page Text¶
Extract Links¶
> extract links
[1] https://example.com/home "Home"
[2] https://example.com/about "About"
[3] https://example.com/contact "Contact"
Waiting for Conditions¶
Wait for Page Load¶
Wait for Network Idle¶
Wait for Element Visibility¶
Wait for Element to Disappear¶
Wait for URL Change¶
Custom Timeout¶
Screenshots¶
Capture Full Page¶
Specify Output File¶
Element-target screenshots are currently limited in unified translation. Use full-page screenshots with explicit output paths.
Common Patterns¶
Basic Page Exploration¶
Handling Cookie Banners¶
Navigating with Pagination¶
goto example.com/products
observe
# Next page
click "Next"
observe
# Previous page
click "Previous"
observe
Scrolling to Load Content¶
goto example.com/infinite-scroll
observe
scroll down --amount 500
wait idle
observe # New elements loaded
scroll down --amount 500
wait idle
observe # More elements loaded
Best Practices¶
-
Always observe after navigation — Element IDs change between pages
-
Use semantic targeting when possible — More resilient to page changes
-
Handle popups early — Cookie banners and modals can block interaction
-
Wait for conditions — Don't assume instant page loads
-
Re-scan after dynamic updates — AJAX content changes the element map