Селен Нажав все последующие кнопки на Instagram Python - PullRequest
1 голос
/ 04 апреля 2020

Я пытаюсь автоматизировать Instagram, нажимая кнопки при нажатии на имя пользователя на сайте Instagram.

После нажатия на имя пользователя, вы затем нажимаете подписчиков, и открывается окно, содержащее людей, следующих за этим человеком, и есть кнопки следования

Вот скриншот нового окна

image

Я пытаюсь нажимать кнопки по одной через python селен, но ничего, что я пробую, похоже, не работает.

Лучшее, что я получил, было для l oop, который только нажимал первую кнопку подписки, используя xpath, но остальные кнопки не нажимались.

#click the followers button to dispaly the users followers
driver.find_element_by_partial_link_text("followers").click()
time.sleep(3)
#scroll through the followers list to a specified heeight
scroll_box=driver.find_element_by_xpath("/html/body/div[4]/div/div[2]")
last_ht, ht=0, 1
while last_ht !=ht:
    last_ht=ht
    time.sleep(2)
    ht=driver.execute_script("""arguments[0].scrollTo(0, 2000);
    return 2000;
    """, scroll_box)
#follow users up to the specified height
follow=driver.find_elements_by_xpath("/html/body/div[4]/div/div[2]/ul/div/li[1]/div/div[3]/button")
for x in range (0,len(follow)):
        follow[x].click()
        time.sleep(2)

    time.sleep(1)

1 Ответ

1 голос
/ 04 апреля 2020

Ваш селектор Xpath, похоже, скопирован прямо из chrome инструментов разработчика, и, кстати, он вернет только одну кнопку, если вы нацеливаетесь на одну li

# Get all buttons that has the text Follow 
buttons = driver.find_elements_by_xpath("//button[contains(.,'Follow')]")
for btn in buttons:
    # Use the Java script to click on follow because after the scroll down the buttons will be un clickeable unless you go to it's location
    driver.execute_script("arguments[0].click();", btn)
    time.sleep(2)
...