无法点击提交按钮

时间:2021-06-09 15:48:43

标签: python selenium selenium-webdriver selenium-chromedriver

我写了代码

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()

但是,按钮没有被点击。如何点击“获取数据按钮”?

3 个答案:

答案 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警报。

enter image description here

更新 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()