0

Thank you for taking a look at my question, I appreciate your help.

I looked around at the available answers and none of them seem to work for me. Other answers seem to deal with switching to an iframe, which I do successfully (otherwise it would crash sooner, right?), then I can't select a dropdown menu in that iframe.

Some of the approaches I tried:

Unable to click on dropdown within iframe - Selenium Python

Can't access dropdown select using Selenium in Python

Python Selenium - Cant Click on Button (iFrame Solved !)

For some reason the element isn't there - I tried using wait statements (both sleep and EC.waits) but that also didn't work. When I observe the program run, I can see that the driver successfully loads the iframe and the elements are selectable, so I think it may be a misunderstanding in how you access iframe elements.

Here is the code, you'll notice it is behind a login block, I don't know what I can do in this case to help people get to that point, but I have shared all the html and code I can think of and can share more upon request:

def clear_wardrobe():
    """Clears the user's wardrobe so that they have no items listed"""
    try:
        # Initialize
        log_in()

        # Fetch the number of items on the page and loop through all of them.
        while True:
            driver.get("https://www.grailed.com/users/myitems")
            time.sleep(2)
            item = driver.find_element_by_xpath("//*[@id=\"wardrobe\"]/div/div[3]/div/div[2]/div[2]/div/div[1]/div[1]/a/div[2]/img")
            item.click()
            time.sleep(3)

            driver.switch_to.window(driver.window_handles[1])

            element = driver.find_element_by_xpath("/html/body/div[8]/div/div[2]/div[3]/div[9]/div[2]/span/a")
            actions = ActionChains(driver)
            actions.move_to_element(element).perform()

            time.sleep(0.5)
            element = driver.find_element_by_xpath("//*[@id=\"Listing--Actions\"]/div/div[1]")
            element.click()
            time.sleep(1)

            # switch to specific iframe and select "Sold Elsewhere option" - ISSUE IS HERE
            frame = driver.find_element_by_xpath("//iframe[contains(@title,'Optimizely Internal Frame')]")
            driver.switch_to.frame(frame)
            select_box = Select(driver.find_element_by_name("reason"))
            select_box.select_by_visible_text("Sold Elsewhere")
            time.sleep(3)
            driver.find_element_by_xpath("//*[@type='submit']").click()

    except NoSuchElementException:
        print("Something went wrong in clearWardrobe()")
        traceback.print_exc()

Here is the page with dropdown - I want to select sold elsewhere enter image description here

And here is the error message:

Something went wrong in clearWardrobe()
Traceback (most recent call last):
  File "/Users/thomas.mclaughlin/Documents/GitHub/WardrobeWizard2/scripts/core.py", line 110, in clear_wardrobe
    select_box = Select(driver.find_element_by_name("reason"))
  File "/Users/thomas.mclaughlin/Library/Python/3.8/lib/python/site-packages/selenium/webdriver/remote/webdriver.py", line 496, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "/Users/thomas.mclaughlin/Library/Python/3.8/lib/python/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "/Users/thomas.mclaughlin/Library/Python/3.8/lib/python/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Users/thomas.mclaughlin/Library/Python/3.8/lib/python/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="reason"]"}
  (Session info: chrome=89.0.4389.90)
4
  • 1
    It doesnt seem to be in the iframe. Commented Mar 26, 2021 at 20:09
  • 1
    it's just a modal div there... don't need to switch to the frame. Commented Mar 26, 2021 at 20:35
  • @pcalkins I started these shenanigans because I couldn't select the element on the modal - that led me to think it was an iframe issue, I will try to recreate the first issue and update this post. Commented Mar 26, 2021 at 21:14
  • @pcalkins Wow, I am really embarassed, sorry about that - I can't believe I didn't do that... Commented Mar 26, 2021 at 21:23

1 Answer 1

0

Turns out the element was in a modal and not an iframe so the question is flawed.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.