--- id: "9fd3fd9d-224f-4f3e-a497-9a7fe4f80df4" name: "PeopleSoft Same-Origin Iframe" micro_summary: "Student Center content lives in `iframe#ptifrmtgtframe`; read and click through `contentDocument` after switching to the exact cmsweb tab." status: "resolved" see_also: [] scope: "Access the SFSU Student Center's main PeopleSoft content through its same-origin TargetContent iframe." warnings: "Switch to the exact cmsweb target before dereferencing `#ptifrmtgtframe`; never persist student-specific records in this shared skill tree." --- The top-level `psp` page is only a shell. Its main content is in same-origin `iframe#ptifrmtgtframe` (`name="TargetContent"`, title `Main Content`) whose `src` uses the `psc` path. Read it with: ```javascript const f = document.getElementById('ptifrmtgtframe'); const d = f.contentDocument; const text = d.body.innerText; ``` Use `d.querySelector(...)` or stable PeopleSoft element IDs and call `.click()` inside that document. After each PeopleSoft submission, wait for the `Processing Please wait` overlay to disappear and then re-read `f.contentWindow.location.href`, `f.contentDocument.title`, and body text. Re-switch the outer tab before each browser-harness command if another target has stolen the active binding. This tree stores mechanics only; never persist student IDs, grades, addresses, balances, or other personal records.