Python Селен, Невозможно нажать кнопку JS - PullRequest
0 голосов
/ 26 февраля 2020

Edit1 [Я недавно пытался явно щелкнуть по кнопке, это показывает, что кнопка нажимается, скорее, рамка таблицы не загружается]

это сценарий, который я написал для данного URL В блоке try and finally я пробовал разные способы нажатия. Но я, наверное, думаю, что это не кнопка, а какой-то слушатель событий, прикрепленный там. Может ли кто-нибудь помочь мне щелкнуть изображение «Получить данные» и объяснить основные веб-вызовы от HTML до JS Я новичок в этом!

Заранее спасибо

from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.support.select import Select
import time
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By


options = webdriver.ChromeOptions()

preferences = {"download.default_directory": "/Users/Iunix/PycharmProjects/untitled/test",
               "safebrowsing.enabled": "false"}
options.add_experimental_option("prefs", preferences)

driver = Chrome(executable_path='/Users/Iunix/PycharmProjects/untitled/venv/bin/chromedriver', chrome_options=options)
profile = webdriver.ChromeOptions()
#wait = WebDriverWait(driver,40)
driver.get("https://www1.nseindia.com/products/content/derivatives/equities/historical_fo.htm")

obj = Select(driver.find_element_by_name("instrumentType"))
obj.select_by_index(3)

obj = Select(driver.find_element_by_name("symbol"))
obj.select_by_index(4)

obj = Select(driver.find_element_by_name("year"))
obj.select_by_index(4)

objExpiry = Select(driver.find_element_by_name("expiryDate"))
objExpiry.select_by_index(1)

objOptionType = Select(driver.find_element_by_name("optionType"))
objOptionType.select_by_index(1)

inputStrikePrice = driver.find_element_by_name("strikePrice")
inputStrikePrice.send_keys(31000)

objDate = Select(driver.find_element_by_name("dateRange"))
objDate.select_by_index(4)

try:
    #wait(driver,10).until(EC.presence_of_element_located((By.XPATH,'//*[@id="getButton"]')))
    wait(driver,10).until(driver.execute_script('document.querySelector("#getButton").click()'))
    #driver.find_element_by_css_selector("getButton").click()
    #driver.find_element_by_id("getButton").send_keys('\n')
finally:
    print(driver.find_element_by_id("getButton"))
    print(driver.find_element_by_id("getButton").click())
...