Как прокрутить прямые сообщения Instagram с помощью Selenium и Python с Chrome Device Toolbar - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь автоматизировать прокрутку в Instagram Direct, чтобы иметь возможность перейти к началу чата в Instagram. Кроме того, я думаю, что невозможно выбрать полосу прокрутки с помощью xpath, поэтому, возможно, необходимо использовать автоматическое c нажатие клавиши l oop с клавишей «home» или «page up». Но, честно говоря, я действительно не знаю, как это сделать. Ps: Если вы удерживаете нажатой клавишу «домой», вы сможете прокрутить только несколько страниц, прежде чем прокрутка просто остановится, поэтому вам нужно отпустить клавишу через пару секунд, чтобы продолжить прокрутку вверх. Так что, возможно, это не лучший способ сделать то, что я ищу. Я надеюсь, что кто-нибудь может мне помочь, большое спасибо!

Исходный код:

    from selenium import webdriver
    from time import sleep
    from secrets import username, pw


    from selenium.webdriver.chrome.options import Options

    mobile_emulation = {

        "deviceMetrics": { "width": 360, "height": 640, "pixelRatio": 3.0 },

        "userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19" }

    chrome_options = Options()

    chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)




    class MsgBot:
def __init__(self):
    self.driver = webdriver.Chrome(chrome_options = chrome_options)

    self.driver.get("https://instagram.com")
    sleep(2)
    self.driver.find_element_by_xpath('//*[@id="react-root"]/section/main/article/div/div/div/div[2]/button').click()
    sleep(5)
    login_input = self.driver.find_element_by_xpath('//*[@id="react-root"]/section/main/article/div/div/div/form/div[4]/div/label/input')
    login_input.send_keys(username)
    pw_input = self.driver.find_element_by_xpath('//*[@id="react-root"]/section/main/article/div/div/div/form/div[5]/div/label/input')
    pw_input.send_keys(pw)
    login_btn = self.driver.find_element_by_xpath('//*[@id="react-root"]/section/main/article/div/div/div/form/div[7]/button').click()
    sleep(4)
    self.driver.find_element_by_xpath('//*[@id="react-root"]/section/main/div/button').click()
    sleep(4)
    self.driver.find_element_by_xpath('/html/body/div[4]/div/div/div[3]/button[2]').click()
    sleep(2)
    self.driver.find_element_by_xpath('//*[@id="react-root"]/section/nav[1]/div/div/header/div/div[2]/a/div').click()
    sleep(4)
    self.driver.find_element_by_xpath('/html/body/div[4]/div/div/div[3]/button[2]').click()
    sleep(4)
    self.driver.find_element_by_xpath('//*[@id="react-root"]/section/div[2]/div/div/div[2]/div/div[2]/a').click()
    sleep(3)
    #scroll should begin

MsgBot ()

1 Ответ

0 голосов
/ 17 февраля 2020

Для прокрутки к элементу вы можете использовать:

from selenium.webdriver.common.action_chains import ActionChains

actions = ActionChains(driver)
element = driver.find_element_by_id("id")
actions.move_to_element(element).perform()

или

driver.execute_script("arguments[0].scrollIntoView();", element)

для прокрутки к элементу, используя JavaScript код

...