Search code examples
pythonseleniumselenium-webdrivergetattribute

Extracting element IDs of required forms in selenium/python


I'm crawling this page (https://boards.greenhouse.io/reddit/jobs/4330383) using Selenium in Python and am looping through all of the required fields using:

required = driver.find_elements_by_css_selector("[aria-required=true]").

The problem is that I can't view each element's id. The command required[0].id (which is the same as driver.find_element_by_id("first_name").id returns a long string of alphanumeric characters and hyphens – even though the id is first_name in the HTML. Can someone explain to be why the id is being changed from first_name to this string? And how can I view the actual id that I'm expecting?

Additionally, what would be the simplest way to reference the associated label mentioned right before it in the HTML (i.e. "First Name " in this case)? The goal is to loop through the required list and be able to tell what each of these forms is actually asking the user for.

Thanks in advance! Any advice or alternatives are welcome, as well.


Solution

  • Your code is almost good. All you need to do is use the .get_attribute() method to get your id's:

    required = driver.find_elements_by_css_selector("[aria-required=true]")
    for r in required:
        print(r.get_attribute("id"))