Check a URL with Selenium IDE
Tags: selenium, testing, tutorial, webdev
Published: 2022-04-06 22:11:31

---
title: "Check a URL with Selenium IDE"
description:  "JavaScript is necessary"
published: true
date: 2022-04-06 15:00:00 UTC
tags: selenium, testing, tutorial, webdev
canonical_url: https://katiekodes.com/selenium-ide-check-url/
cover_image: https://res.cloudinary.com/kkcl/image/upload/t_kkogfbk/w_750,h_380,c_fit,co_white,g_north_west,x_80,y_190,l_text:Inter-bold.otf_80_bold:Check%20a%20URL%20with%20Selenium%20IDE/t_wKK/kk-og-bg-roomier.jpg
---

It took me a while to figure out how to get [Selenium IDE](https://www.selenium.dev/selenium-ide/) to click a link, wait for the new tab's page-load to settle down, and validate the URL of the new page, but I did it.

Overall, I'm [pretty satisfied](https://katiekodes.com/selenium-ide-check-url/#selenium-ide-caveats) with Selenium IDE.  If you have business processes that involve visiting a web site and clicking around a bunch to "make sure everything looks good," it's a nifty tool for pretending to be yourself, only sped up really really fast.

## Steps

The one and only test present in this Selenium IDE project runs through 8 steps:

1. Open the [Katie Kodes](https://ko-fi.com/katiekodes) page on Ko-Fi
    * Command:  `open`
    * Target:  `katiekodes` _(on top of a test base URL of `https://ko-fi.com/`)_
2. Click the [Katie Kodes blog](https://katiekodes.com) link
    * Command:  `click`
    * Modify new window configuration -> New Window Configuration Enabled:  checked, Window Name:  `blog_new_tab`, Timeout:  2000, click "Confirm"
    * Target:  `xpath=(//a[@target="_blank" and contains(@href, "katiekodes.com")])[1]`
3. Close the original Ko-Fi tab
    * Command:  `close`
4. Make sure we are viewing the new blog tab
    * Command:  `select window`
    * Target:  `handle=${blog_new_tab}`
5. Wait for something bloggey to be on the screen
    * Command:  `wait for element present`
    * Target:  `xpath=(//a[contains(@href, "ko-fi.com")])[1]`
    * Value:  `30000`
    * _(Technically, this isn't required for this example, but the situation I was dealing with opened a new tab and then handed off cookies through about 4 different URLs before settling down on one, so I decided to validate that things were "all done" by looking for a weird, distinctive HTML element I knew only existed in the final, settled page.)_
6. Save the blog URL to a variable
    * Command:  `execute script`
    * Target:  `return document.URL;`
    * Value:  `theurl`
7. Assert that the blog URL is correct
    * Command:  `assert`
    * Target:  `theurl`
    * Value:  `https://katiekodes.com/`
8. Close the web browser
    * Command:  `close`

---

## Code

To try it yourself, save this code as `Selenium Demo.side` on your computer and open it as a project with the [Selenium IDE browser plugin](https://www.selenium.dev/selenium-ide/), then click the "Validate the new-tab URL" test and click "Run current test."

<div class="expandable-code" markdown="block">

```json
{
  "id": "ca2c89aa-50b1-4eea-91e6-c2e01ae6cb0a",
  "version": "2.0",
  "name": "Selenium demo",
  "url": "https://ko-fi.com/",
  "tests": [{
    "id": "e363b287-2838-40db-b1b8-57dd100af3a5",
    "name": "Validate the new-tab URL",
    "commands": [{
      "id": "712005e0-c6ec-4f10-9162-da97499d5e23",
      "comment": "Open Katie Kodes Ko-Fi donations page",
      "command": "open",
      "target": "katiekodes",
      "targets": [],
      "value": ""
    }, {
      "id": "9eaf4f01-f179-4c19-855c-4eb9a1968158",
      "comment": "Click the Katie Kodes blog link",
      "command": "click",
      "target": "xpath=(//a[@target=\"_blank\" and contains(@href, \"katiekodes.com\")])[1]",
      "targets": [],
      "value": "",
      "opensWindow": true,
      "windowHandleName": "blog_new_tab",
      "windowTimeout": 2000
    }, {
      "id": "3c0233e1-b2d4-4c82-b806-7d9133e94e96",
      "comment": "Close the original Ko-Fi tab",
      "command": "close",
      "target": "",
      "targets": [],
      "value": ""
    }, {
      "id": "5683db68-8b78-48a7-b959-84ebccd70119",
      "comment": "Make sure we are viewing the new blog tab",
      "command": "selectWindow",
      "target": "handle=${blog_new_tab}",
      "targets": [],
      "value": ""
    }, {
      "id": "a37060a8-8e9b-4848-9068-f4a1fcb5f2ca",
      "comment": "Wait for something bloggey to be on the screen",
      "command": "waitForElementPresent",
      "target": "xpath=(//a[contains(@href, \"ko-fi.com\")])[1]",
      "targets": [],
      "value": "30000"
    }, {
      "id": "ff897cc8-d4f0-4762-8695-d9551d7f4e96",
      "comment": "Save the blog URL to a variable",
      "command": "executeScript",
      "target": "return document.URL;",
      "targets": [],
      "value": "theurl"
    }, {
      "id": "b3b8f50b-4266-4c68-902b-33e150279274",
      "comment": "Assert that the blog URL is correct",
      "command": "assert",
      "target": "theurl",
      "targets": [],
      "value": "https://katiekodes.com/"
    }, {
      "id": "68c8b88e-84bb-4c80-b914-3a0278995967",
      "comment": "Close the web browser",
      "command": "close",
      "target": "",
      "targets": [],
      "value": ""
    }]
  }],
  "suites": [{
    "id": "398fd234-8bcf-48ff-ab6c-4785b1ab469f",
    "name": "My first suite",
    "persistSession": false,
    "parallel": false,
    "timeout": 300,
    "tests": ["e363b287-2838-40db-b1b8-57dd100af3a5"]
  }],
  "urls": ["https://ko-fi.com/"],
  "plugins": []
}
```

</div>