Çözüldü Python Selenium ile buton tıklatma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

mertkaplandar

Hectopat
Katılım
26 Aralık 2019
Mesajlar
343
Çözümler
2
Daha fazla  
Cinsiyet
Erkek
Öncelikle herkese merhaba,
Arkadaşlar Python dilini kullanarak bir Instagram takip isteği atma botu yapıyordum.
Piyasa Python olmasa da bunun gibi tarayıcı eklentiler var ama sınırlı sayıda istek atıyor. Örnek olarak Super Powers for Instagram tarayıcı eklentisi.
Ben de sınırlı sayıda olduğu için kendim yapmaya karar verdim.

Çoğu kodu yazdım ama bir sıkıntım var.
Bir kişinin Instagram sayfasına geldikten sonra "takipçiler" butonuna basmayı yapamadım.
Başlıca olarak:
[CODE lang="python" highlight="1,3"] driver.find_element_by_link_text().click()

driver.find_element_by_class_name().click()[/CODE]
gibi komutları kullandım ama butonu sayfada bulamadılar.

Yapabilenler veya bilen varsa lütfen konuda kodu paylaşsın...
 
Çözüm
Çözüm şöyle:
+ Takip Et butonuna sağ tıklayıp öğeyi denetle dedim.
+ Sonra butonun kodunun olduğu yere sağ tıklayıp Copy>Copy Xpath seçeneğine basarak XPATH'i kopyaladım.
Kod olarak da:
[CODE lang="python" highlight="1"]driver.find_element_by_xpath("/html/body/div[5]/div/div/div[2]/ul/div/li[1]/div/div[3]/button").click()[/CODE]
Olarak yazdım ve sorun çözüldü.
Evet zaten öncelikle oturum açması için bir kod yazdım. Başlangıçta kullanıcı adı ve şifre istedikten sonra bana takip edeceğim kullanıcının URL adresini yazmamı istiyor.
Ben URL adresini yazdıktan sonra takipçiler butonuna basmasını istiyorum ama bir türlü yapamadım.
 
Ben URL adresini yazdıktan sonra takipçiler butonuna basmasını istiyorum ama bir türlü yapamadım.
Butonu XPATH ile mi arıyorsun yoksa class ile mi?

Bir de şöyle bir durum var. Instagram React.js ile yapıldığı için elemanlara ulaşmak daha zor olabilir, hatta mümkün olmayabilir.
Şu kütüphaneleri ekleyip;

Python:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

CSS ve XPATH için aşağıdaki yöntemlerden birini deneyebilirsin.

[CODE lang="python" title="CSS_SELECTOR"]WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "buton_classi"))).click()[/CODE]

[CODE lang="python" title="XPATH"]WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "ogeyi_denetleden_aldigin_xpath"))).click()
[/CODE]

Instagram'ın şu anki takipçi butonu XPATH'i aşağıda;

Kod:
//*[@id="react-root"]/section/main/div/header/section/ul/li[2]/a
 
Çözüm şöyle:
+ Takip Et butonuna sağ tıklayıp öğeyi denetle dedim.
+ Sonra butonun kodunun olduğu yere sağ tıklayıp Copy>Copy Xpath seçeneğine basarak XPATH'i kopyaladım.
Kod olarak da:
[CODE lang="python" highlight="1"]driver.find_element_by_xpath("/html/body/div[5]/div/div/div[2]/ul/div/li[1]/div/div[3]/button").click()[/CODE]
Olarak yazdım ve sorun çözüldü.
 
Çözüm

Geri
Yukarı