Reputation: 51
I'm trying to locate the 'follow' button element on an instagram page (using selenium).
I've found the main 'follow' button of a user's page (https://www.instagram.com/USERNAME/) with the following code:
follow_button = self.driver.find_element_by_css_selector('button')
Although after clicking the above element ^, now I'm trying to locate 'follow' buttons visible when you view a user's followers. Click here to see which buttons I'm referring to.
I've tried the following code but it doesn't work:
acc_follow_buttons = self.driver.find_elements_by_css_selector('button')
for acc in acc_follow_buttons[:15]:
acc.click()
time.sleep(1)
I've also tried searching with Xpath, with no luck.
Could anyone with experience in Selenium help me with the code to locate the follow buttons on this page.
Upvotes: 2
Views: 4269
Reputation: 135
Without having to check if a element exist or not, check if the ds_user_id
cookie is in the cookies.
# make a function to check if instagram is logged in
def is_logged_in():
# getting instagram so we only have instagram cookies in driver.get_cookies()
driver.get("https://www.instagram.com")
# get all the cookies, this returns a list of dicts
cookies = driver.get_cookies()
# loop through all the cookies till we find some cookie has ds_user_id in its name
# to return True, but if the loop finished without finding one it will return False
for cookie in cookies:
if cookie['name'] == 'ds_user_id':
return True
return False
Very fast and better way.
Upvotes: 0
Reputation: 56
You have to search for the button by button text:
Follow_Button = driver.find_element_by_xpath("//*[text()='Follow']")
Upvotes: 4
Reputation: 146
try this. range here points to number of followers.add a code to get follower count and append it to range.note that, list starts from 1.
for i in range(1, 10):
follow = driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/ul/div/li[{}]/div/div[3]/button'.format(i))
follow.click()
time.sleep(0.5)
Upvotes: 0
Reputation: 303
I don't have an Instagram account so I'm answering somewhat blind, but do the follow buttons have classes? If so then you can use driver.find_elements_by_class_name() to find the specific buttons.
Upvotes: 0