Süper Üye
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome()
driver.maximize_window()
def getInputs():
global filtre
global kosul
global deger
filtre = input("Filtre giriniz: ")
kosul = input("Koşul giriniz: ")
deger = input("Değer giriniz: ")
def reset():
driver.get("https://tr.tradingview.com/screener/")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.tv-screener-toolbar__button.tv-screener-toolbar__button--options.tv-screener-toolbar__button--filters.apply-common-tooltip.common-tooltip-fixed'))).click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.tv-screener-search__reset.js-search-reset'))).click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "tv-screener-search__input"))).click()
def get_values():
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "tv-screener-search__input"))).send_keys(filtre)
wait = WebDriverWait(driver, 10)
dropdown_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'tv-screener-dialog__selectbox-dropdown-toggle')))
dropdown_element.click()
time.sleep(0.1)
if(kosul != ""):
options = driver.find_elements(By.CSS_SELECTOR, "span.tv-dropdown-behavior__item")
if kosul == "Küçük":
for option in options:
if option.get_attribute("data-value") == "less":
option.click()
break
elif kosul == "Küçük veya Eşit":
for option in options:
if option.get_attribute("data-value") == "eless":
option.click()
print("ok")
break
elif kosul == "Büyük":
for option in options:
if option.get_attribute("data-value") == "greater":
option.click()
break
elif kosul == "Büyük veya Eşit":
for option in options:
if option.get_attribute("data-value") == "egreater":
option.click()
break
elif kosul == "Kesişimler":
for option in options:
if option.get_attribute("data-value") == "crosses":
option.click()
break
elif kosul == "Yukarı Keser":
for option in options:
if option.get_attribute("data-value") == "crosses_above":
option.click()
break
elif kosul == "Aşağı Keser":
for option in options:
if option.get_attribute("data-value") == "crosses_below":
option.click()
break
elif kosul == "Arasında":
for option in options:
if option.get_attribute("data-value") == "in_range":
option.click()
break
elif kosul == "Dışarı":
for option in options:
if option.get_attribute("data-value") == "not_in_range":
option.click()
break
elif kosul == "Eşit":
for option in options:
if option.get_attribute("data-value") == "equal":
option.click()
break
elif kosul == "Eşit Değil":
for option in options:
if option.get_attribute("data-value") == "nequal":
option.click()
break
value = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'input[type="text"]')))
value.send_keys(deger)
time.sleep(3)
elements = driver.find_elements(By.CLASS_NAME, "tv-screener__symbol")
texts = [element.text for element in elements]
print(texts)
while True:
getInputs()
reset()
get_values()
time.sleep(20)
Yukarı yazdığım kodda bir yere kadar hava hoş ama iş dropdown listesini açmaya geldiğinde Element not interectable hatası veriyor ya da hiç hata vermeden basmayıp devam ediyor bir de Value kısmına da aynı şekilde değer giremiyorum. İşin içinden çıkamadım şimdiden teşekkürler sizde siteye gidip bakabilirsiniz.