Нажатие на твиттере любимой кнопки через Selenium не дает никакого эффекта - PullRequest
0 голосов
/ 16 сентября 2018

Я использовал скрипт Python для входа в свою учетную запись Twitter и нажимал кнопку избранного каждого твита на моей временной шкале. Несмотря на то, что элемент кнопки может быть расположен, а на консольном выводе показано, что каждая кнопка была нажата, это, похоже, не дает никакого эффекта - когда я захожу в свою учетную запись и проверяю, я обнаружил, что ни один твит не «понравился». Кто-нибудь знает, как работает любимый механизм?

from selenium import webdriver
from getpass import getpass
from pyvirtualdisplay import Display
import sys
import codecs
from selenium.webdriver.support import expected_conditions as EC
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains

sys.stdout = codecs.getwriter('utf8')(sys.stdout)
sys.stderr = codecs.getwriter('utf8')(sys.stderr)

def login_twitter(username, password, driver):

    username_field = driver.find_element_by_class_name("js-username-field")
    password_field = driver.find_element_by_class_name("js-password-field")

    username_field.send_keys(username)
    driver.implicitly_wait(1)

    password_field.send_keys(password)
    driver.implicitly_wait(1)

    driver.find_element_by_class_name("EdgeButtom--medium").click()

    driver.implicitly_wait(10)
    print("Login OK")

    elements = driver.find_elements_by_class_name("ProfileTweet-action--favorite")

    print("Found " + str(len(elements)) + " elements")

    for e in elements:
        try:
            print("Waiting for element to be visible")
            WebDriverWait(driver, 10).until(EC.visibility_of(e))
            print("clicking " + str(e))
            ActionChains(driver).move_to_element(e).click().perform()
            print("clicked " + str(e.text))
            time.sleep(1)
        except Exception as e:
            print(str(e))

if __name__ == "__main__":
    username = input("user name : ")
    password = getpass("password  : ")

    display = Display(visible=0, size=(1024, 2048))
    display.start()

    driver = webdriver.Firefox()
    driver.get("https://twitter.com/login")

    try:
        login_twitter(username, password, driver)
    except Exception as e:
        print(str(e))

    driver.quit()
    display.stop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...