# gunesmes/page-object-python-selenium architecture

> Architecture diagram of the GitHub repository gunesmes/page-object-python-selenium, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gunesmes/page-object-python-selenium
- Repository: https://github.com/gunesmes/page-object-python-selenium
- Video tour (about a minute): https://gitdiagram.com/gunesmes/page-object-python-selenium/video

## Overview

A small Selenium Page Object Model framework for exercising Amazon search, sign-in, and sign-up flows. User transactions or a caller enter through page objects; page methods use shared WebDriver helpers and locators, while login can use configured user data and return a home-page object. The signup page and HomePage capability are documented, but their implementation was not sampled; links reflect only explicit source usage. Tests and report generation are excluded.

Main entry points: [`pages/main_page.py`](https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/main_page.py) (Main page), [`pages/login_page.py`](https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/login_page.py) (Login page), [`transactions/login_transaction.py`](https://github.com/gunesmes/page-object-python-selenium/blob/master/transactions/login_transaction.py) (Submit login), [`pages/base_page.py`](https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/base_page.py) (Base page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_pages["Page objects"]
  node_main["Main page<br/>[main_page.py]"]
  node_login["Login page<br/>[login_page.py]"]
  node_signup["Signup page<br/>[signup_page.py]"]
  node_home["Home page<br/>[home_page.py]"]
  node_base["Base page<br/>[base_page.py]"]
end

subgraph group_transactions["User transactions"]
  node_user_main_tx["Open sign-in"]
  node_login_tx["Submit login"]
end

subgraph group_support["Page support"]
  node_locators["Element locators<br/>[locators.py]"]
  node_users["User data<br/>[users.py]"]
end

node_user(("Caller"))
node_browser(("Amazon browser"))

node_user -->|"uses"| node_main
node_user -->|"starts"| node_user_main_tx
node_user -->|"starts"| node_login_tx
node_main -->|"uses helpers"| node_base
node_main -->|"reads"| node_locators
node_main -->|"creates"| node_login
node_main -->|"creates"| node_signup
node_main -->|"navigates"| node_browser
node_login -->|"uses helpers"| node_base
node_login -->|"reads"| node_locators
node_login -->|"looks up"| node_users
node_login -->|"returns"| node_home
node_base -->|"drives"| node_browser
node_user_main_tx -->|"opens sign-in"| node_main
node_login_tx -->|"enters credentials"| node_login
node_login_tx -->|"reads URL"| node_browser

click node_main "https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/main_page.py"
click node_login "https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/login_page.py"
click node_signup "https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/signup_page.py"
click node_home "https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/home_page.py"
click node_base "https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/base_page.py"
click node_user_main_tx "https://github.com/gunesmes/page-object-python-selenium/blob/master/transactions/login_transaction.py"
click node_login_tx "https://github.com/gunesmes/page-object-python-selenium/blob/master/transactions/login_transaction.py"
click node_locators "https://github.com/gunesmes/page-object-python-selenium/blob/master/utils/locators.py"
click node_users "https://github.com/gunesmes/page-object-python-selenium/blob/master/utils/users.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_login,node_signup,node_home,node_base,node_browser toneBlue
class node_user_main_tx,node_login_tx toneAmber
class node_locators,node_users toneMint
class node_user toneIndigo
```

## Components

### Page objects

- [Main page](https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/main_page.py): `pages/main_page.py`
- [Login page](https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/login_page.py): `pages/login_page.py`
- [Signup page](https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/signup_page.py): `pages/signup_page.py`
- [Home page](https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/home_page.py): `pages/home_page.py`
- [Base page](https://github.com/gunesmes/page-object-python-selenium/blob/master/pages/base_page.py): `pages/base_page.py`

### User transactions

- [Open sign-in](https://github.com/gunesmes/page-object-python-selenium/blob/master/transactions/login_transaction.py): `transactions/login_transaction.py`
- [Submit login](https://github.com/gunesmes/page-object-python-selenium/blob/master/transactions/login_transaction.py): `transactions/login_transaction.py`

### Page support

- [Element locators](https://github.com/gunesmes/page-object-python-selenium/blob/master/utils/locators.py): `utils/locators.py`
- [User data](https://github.com/gunesmes/page-object-python-selenium/blob/master/utils/users.py): `utils/users.py`

### Other components

- **Caller**
- **Amazon browser**

## Connections

- Caller → Main page: uses
- Caller → Open sign-in: starts
- Caller → Submit login: starts
- Main page → Base page: uses helpers
- Main page → Element locators: reads
- Main page → Login page: creates
- Main page → Signup page: creates
- Main page → Amazon browser: navigates
- Login page → Base page: uses helpers
- Login page → Element locators: reads
- Login page → User data: looks up
- Login page → Home page: returns
- Base page → Amazon browser: drives
- Open sign-in → Main page: opens sign-in
- Submit login → Login page: enters credentials
- Submit login → Amazon browser: reads URL
