Selenium input tıklama


Merhaba Ben Bir Web Otomasyonu Yaptım Webdriverden Fakat Tek Bir Yer Kaldı Buraya Hiçbir Şekilde Tıklamıyor Ne Yaptıysam Ne Ettiysem Tıklamadı xpathini aldım olmadı id olarak aldım olmadı hiçbir şekilde olmadı yapamadım heryere baktım yok Şu Mübarek Günde Bir Yardım Etseniz Çok Mutlu Olurum Şimdiden Allah Razı olsun Teşekkür Ederim İsteyene Programın Kodlarını Atabilirim Eğer Yardımcı Olabilecek İşin Ehli Birisi Varsa Selametle Allaha Emanetsiniz

Geçenlerde vergi dairesinin sayfasında benzer bir sorun ile karşılaşmıştım. 2 defa denediğimde sorunsuz şekilde ilerledim. belki iş görür

hesap= driver.find_element_by_id(“ember5669”)
hesap.send_keys(“girilecek bilgi”)
hesap.send_keys(“girilecek bilgi”)

Kardeş id olarak da yazdım yok olmuyor

peki bu kodlar öncesi frame değiştirdin mi?
ya da burada frame değişiyor olabilir mi?
örneğin;

driver.switch_to.default_content()

driver.switch_to.frame(“ilgiliframe”)

İşte iframeden anlamıyorum değiştirmedim anlamadım çünkü istersen sana kodları atabilirim

sayfaya ilk gittiğimde sayfada page_source ile içeriğini aldım.
incelediğimde hesap ismine dair herhangi bir tag yoktu. Daha sonra aşağıdaki iframe yakaladım.

iframe data-type=“trinity” frameborder=“0” style=“position: fixed; top: 0px; left: 0px; width: 100%; height: 100%; z-index: 15;” name=“trinity-iframe” src=“Paraşüt Kullanıcı Girişi id yaz?render_trinity_iframe=true”

İlgili iframe aşağıda açabilirsin.

driver.switch_to.frame(“trinity-iframe”)
#sayfa içeriğini aşağıdaki gibi görebilirsin.
print(driver.page_source)
time.sleep(1)
hesap = driver.find_element_by_id(“ember1206”)
hesap.send_keys(“girilecek bilgi”)

#tekrar default frame dönmek için

driver.switch_to.default_content()

hocam allah razı olsun vallahi billahi nasıl uğraştığımı bir ben bir allah biliyor fakat bbu iframi nasıl yapıcam size ulaşabilceğim discord ve instagram var mı acaba nereye koyacam onu anlamadım

1 Beğeni

şuan sizin yaptığınız kodu yapştırdım fakat malesefki aynı şeyi yaptı bir anda kapatıyor time sleepi 300 e ayarlamama rağmen

Kasa hesabı ekle sayfasına driver.get ile gidiyorsan, bu kod sonrasına ekleyebilirsin. Time sleep ya da bs ile web kazıyarak döngüye alabilirsin

Belki başka insanlara da faydası dokunur senden gelenler ile birleştirdiğim kodlar

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Veri Kazıma
from bs4 import BeautifulSoup as bs
import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

#aşağıdaki kodlar arasında while ve for döngülerini geliştirebilirsin.
#İstersen bir class içerisinde fonksiyonlara bölebilirsin.

def robot():
    global driver
    time.sleep(0.5)
    options = webdriver.ChromeOptions()
    try:
        driver = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=options)
        driver.get("https://www.parasut.com/")
        login()

    except:
        time.sleep(0.03)
        return

def login():

    kontrol_0 = 0
    while kontrol_0 == 0:
        print(driver.current_url)
        if driver.current_url=="https://www.parasut.com/":
            kontrol_0 +=1

    #Kontrol noktası geçildi.
    giris = driver.find_element_by_xpath("/html/body/header/div/div[2]/div[2]/ul/li[3]/a").click()
    # Paraşüt şifre bilgileri yazılmalıdır.
    mail = ""
    sifre = ""

    mail_gir = driver.find_element_by_xpath("//*[@id='user_email']").send_keys(mail)
    sifre_gir = driver.find_element_by_xpath("//*[@id='user_password']").send_keys(sifre)
    oturum_ac = driver.find_element_by_xpath("//*[@id='Sign_In']").click()
    print(driver.current_url)

    kontrol_1 = 0
    while kontrol_1 == 0:
        url = driver.current_url
        x = url.split("/")
        if x[2] == 'uygulama.parasut.com':
            if len(x[3]) > 0:
                kontrol_1 +=1

    #Kontrol noktası geçildi.
    driver.get(f"""https://uygulama.parasut.com/{x[3]}/kasa-ve-bankalar/yeni/kasa""")
    time.sleep(0.5)
    # frame değiştirildi.
    driver.switch_to.frame("trinity-iframe")

    #ember bilgisi değiştiği için web sayfasını kazımak daha doğru olacaktır. Burada input elementini yakalamaya
    # çalışıyorum

    soup = bs(driver.page_source, 'html.parser')
    result = soup.find_all("fieldset")
    for rows in result:
        for rows_1 in rows.find_all("input",{"class":"__p-one-way-text__db00b"}, {"type": "text"}):

            emberid = rows_1.get("id")
            print(emberid)
            print(rows_1.decode_contents().strip())
            print(rows_1.text.strip())

    # koşulları kullanmayı seviyorum :)
    if len(emberid)>0:

        hesap = driver.find_element_by_id(emberid)
        hesap.send_keys("girilecek bilgi")

x = robot()
4 Beğeni

Hocam selamlar 1 haftadır bununla uğraşıyordum en son dedim belki benim gibi biri daha vardır ümidiyle google aramama parasut.com yazdım :slight_smile:
Ben bunu vba ile yapmaya çaşıyorum dediğiniz gibi ember ıd ler değiştiği için çözüm bulamadım.
VBA konusunda bilginiz varmı acaba nasıl uyarlayabilirim.

Hocam selamlar vba konusunda hiç bilgim yok ama ne yapmak istiyorsan python ve selenium için yardımcı olabilir.

Hocam yapmak istediğim biraz uzun bir iş bu yüzden böyle birşey talep etmek çok doğru olmaz.
Hepsi burada ve trendyol gibi pazarlarda satış yapıyorum. Faturalarımı manuel kesiyorum yapmak istediğim sipariş sayfasından bilgileri alarak faturayı paraşüte kaydetmek. Ben biraz python araştırayım. Destek ihtiyacım olursa buradan yazarım sizlere.
Şuan için şunu sorsam ilgili alanı nasıl yakalıyorsunuz pyhton ile mantığı nedir.

Hocam selamlar buradaki uyarıyı nasıl çözebilirim.
image

chorme yazımı yanlış olabilir mi.