हैलो इसलिए क्योंकि इंस्टाग्राम एपीआई अब काम नहीं कर रहा है, लेकिन मुझे अभी भी एक इंस्टाग्राम बॉट चाहिए, मैंने अपना छोटा प्रोजेक्ट शुरू किया। सब कुछ ठीक चल रहा है जब तक कि मुझे एक बहुत ही रोचक बात नहीं मिली।

जब मैं अपलोड पिक्चर बटन पर क्लिक करता हूं तो फाइल डायलॉग दिखाई देता है, वह भी योजनाबद्ध है, तो मैं जो करना चाहता था वह कीप्रेस का अनुकरण करना है, इसलिए कुछ खास नहीं (मेरी स्क्रिप्ट में थोड़ा पहले भी किया था) लेकिन कभी भी मेरे अजगर का कारण क्या है जब फ़ाइल डायलॉग की बात आती है तो स्क्रिप्ट बस रुक जाती है, बिना किसी त्रुटि या किसी अन्य चीज़ के, स्क्रिप्ट अभी भी सक्रिय है, यह अगली पंक्ति में नहीं जाना चाहती है।

from selenium import webdriver
from time import sleep
import keyboard
from selenium.webdriver.common.action_chains import ActionChains 

driver = webdriver.Chrome()
driver.get("https://instagram.com")

sleep(2)
#login into Account
username = driver.find_element_by_xpath("/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[1]/div/label/input")
password = driver.find_element_by_xpath("/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[2]/div/label/input")
loginBtn = driver.find_element_by_xpath("/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[3]/button")

#put your username and password here
username.send_keys("username")
password.send_keys("pw")
loginBtn.click()
sleep(4)

#----------------------------------

safeLoginDateBTN = driver.find_element_by_xpath("/html/body/div[1]/section/main/div/div/div/div/button")
safeLoginDateBTN.click()
sleep(4)
notNowNotifications = driver.find_element_by_xpath("/html/body/div[4]/div/div/div/div[3]/button[2]")
notNowNotifications.click()
sleep(4)

#now comes the interestig part
#The problem is that there is no instgram API anymore so what are we going to do?
#exactly we are going to say instagram that we are actually a smarthphone so the browser switches to "phone mode"

keyboard.press_and_release('F12')
sleep(2)
keyboard.press_and_release('Cmd+Shift+M')
sleep(2)
driver.refresh()

#now we are in the device mode
#this is a little workaround because the sh*ti instagram api isnt working anymore
#now comes the upload part

uploadPictureBtn = driver.find_element_by_xpath("/html/body/div[1]/section/nav[2]/div/div/div[2]/div/div/div[3]")
uploadPictureBtn.click()


keyboard.press_and_release('PicsForInstagram')
keyboard.press_and_release('Enter')
0
Moritz 19 सितंबर 2020, 18:17

1 उत्तर

सबसे बढ़िया उत्तर

पृष्ठ 'बैठता है' क्योंकि सेलेनियम अपलोड विंडो को संभाल नहीं सकता है, ऐसा करने के लिए आपको इसे संभालने के लिए AutoIt (यदि आप विंडोज़ पर हैं) या रोबोट फ्रेमवर्क का उपयोग करने की आवश्यकता है। अतीत में यह इनपुट फ़ाइल पर send_keys विधि के साथ भी काम करता था।

यहाँ उस पर एक विषय है

0
Alin Stelian 19 सितंबर 2020, 18:31