The element that I'm trying to select is the one below
<div id="mOnlineEligiblity" class="col span_1_of_3" style="">
<a href="onlineElig.html" style="text-decoration: none !important;color: #275883;"><img src="../../images/mobileHome/Newicon/OnlineEligibility.png" height="65px" width="65px" class="morph">
<br> Online Eligibility </a>
</div>
I tried the following to select it, but it says element not found
driver.find_element_by_id("mOnlineEligiblity")
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="mOnlineEligiblity"]"}
I want to be able to select and click on it
EDIT: -
It is present inside an iframe
like Swaroop mentioned, attaching the image for reference
Had to switch to the iframe
like Swaroop mentioned.
# Find the iframe
iframe = driver.find_element_by_xpath("//iframe[@name='NAME_OF_THE_FRAME']")
# Switch to the iframe
driver.switch_to.frame(iframe)
# Now find the element
driver.find_element_by_id("mOnlineEligiblity").click()
As long as it is indeed on the page that you are loading (isn't in an iframe), then you shouldn't have any issue locating it and clicking on it.
import platform
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.firefox.options import Options
options = webdriver.ChromeOptions()
if platform == "linux" or platform == "linux2":
driver = webdriver.Chrome(executable_path='chromedriver_linux', chrome_options=options)
elif platform == "darwin":
driver = webdriver.Chrome(executable_path='chromedriver_mac', chrome_options=options)
else:
driver = webdriver.Firefox()
driver.maximize_window()
timeout = 10
driver.get("file:///G:/Downloads/random.html")
xpath = '//*[@id="mOnlineEligiblity"]/a'
WebDriverWait(driver, timeout).until(EC.element_to_be_clickable((By.XPATH, xpath)))
link_to_click = driver.find_element(By.XPATH, XPath)
link_to_click.click()
driver.quit()
I would still suggest targeting the element that you actually want to click on via the xpath = '//*[@id="mOnlineEligiblity"]/a'
instead of just xpath = '//*[@id="mOnlineEligiblity"]'
but that's more of a best practice than anything you need to worry about if it's a one-off script.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.