我写了代码
import os
from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--start-maximized')
options.page_load_strategy = 'eager'
# options.add_argument("--headless");
driver = webdriver.Chrome(options=options)
wait = WebDriverWait(driver, 20)
driver.get("https://www1.nseindia.com/products/content/derivatives/equities/historical_fo.htm")
我正在尝试点击按钮
driver.find_element_by_class_name('getdata-button').click()
但是,按钮没有被点击。如何点击“获取数据按钮”?
答案 0 :(得分:2)
您必须等到该元素可点击,否则 Selenium 会立即尝试找到该元素并因 NoSuchElementException: Message: no such element: Unable to locate element
异常而失败。
试试这个:
import os
from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--start-maximized')
options.page_load_strategy = 'eager'
# options.add_argument("--headless");
driver = webdriver.Chrome(options=options)
wait = WebDriverWait(driver, 40)
driver.get("https://www1.nseindia.com/products/content/derivatives/equities/historical_fo.htm")
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.getdata-button'))).click()
答案 1 :(得分:1)
以下对我有用 ID
:
url = "https://www1.nseindia.com/products/content/derivatives/equities/historical_fo.htm"
driver.get(url)
driver.find_element_by_id('getButton').click()
但是你需要发送一些东西,否则你会看到JS警报。
更新 1:
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, 'getButton')))
element.click()
进口:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
答案 2 :(得分:1)
看看这是否有效:-
driver.find_element_by_xpath(".//input[@id='getButton']").click()