简体   繁体   English

如何在python中使用select下面的元素selenium

[英]How to select the following element using selenium in python

The element that I'm trying to select is the one below我正在尝试 select 的元素是下面的那个

<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我尝试了以下 select 它,但它说找不到元素

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我希望能够 select 然后点击它

EDIT: -编辑: -

It is present inside an iframe like Swaroop mentioned, attaching the image for reference它存在于iframe中,如 Swaroop 所述,附上图像以供参考

在此处输入图像描述

Had to switch to the iframe like Swaroop mentioned.不得不像 Swaroop 提到的那样切换到iframe

# 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.只要它确实在您正在加载的页面上(不在 iframe 中),那么找到它并单击它就不会有任何问题。

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.我仍然建议通过xpath = '//*[@id="mOnlineEligiblity"]/a'定位您实际想要点击的元素,而不仅仅是xpath = '//*[@id="mOnlineEligiblity"]'但如果它是一次性脚本,那么这更像是一种最佳实践,而不是你需要担心的任何事情。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM