Я использовал скрипт 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()