Spotify проверка аккаунта веб-плеера с Python Selenium автоматизации - PullRequest
1 голос
/ 24 апреля 2020

Я новичок в кодировании и пытаюсь написать www.open.spotify.com средство проверки аккаунта для веб-плеера spotify с python и селеном.

Я получил python для входа и выхода с этим кодом ; (причина использования xpath в некоторых случаях заключается в том, что в этих случаях нет идентификатора элементов в HTML)

...

import

    import time
    from selenium.webdriver.common.by 
    import By
    from selenium.webdriver.support.ui import 
    WebDriverWait
    from selenium.webdriver.support import 
    expected_conditions as ec
    import random
    from selenium import webdriver
    from 
    selenium.common.exceptions 
    import NoSuchElementException
    from selenium.webdriver.chrome.options 
    import Options
    import os

код

while True:
  startTime = time.asctime(time.localtime(time.time()))
print('\n')
usernamelist =  'example@email.com'
passwordstr2 = 'password'


browser = webdriver.Chrome()
browser.maximize_window()


browser.get('https://accounts.spotify.com/en/login?continue=https:%2F%2Fopen.spotify.com%2F')
wait = WebDriverWait(browser, 5)
wait.until(ec.visibility_of_element_located((By.ID, "login-username")))
wait.until(ec.visibility_of_element_located((By.ID, "login-password")))
wait.until(ec.visibility_of_element_located((By.ID, "login-button")))
k = browser.find_element_by_xpath('//*[@id="app"]/body/div[1]/div[2]/div/form/div[3]/div[1]/div/label/span').click()


# log in chrome 1
username = browser.find_element_by_id('login-username')
choice_name = (random.choice(usernamelist))
username.send_keys(choice_name)
print(choice_name)


password = browser.find_element_by_id('login-password')
password.send_keys(passwordstr2)
time.sleep(5)


login_Button = browser.find_element_by_id('login-button')
login_Button.click()
time.sleep(25)


      drop_user_ = browser.find_element_by_xpath('//*[@id="main"]/div/div[3]/div[1]/header/div[4]/button/span[2]')
        time.sleep(15)
        drop_user_.click()


        time.sleep(10)


        logout = browser.find_element_by_xpath('//*[@id="main"]/div/div[3]/div[1]/header/div[4]/ul/li[3]')
        time.sleep(15)
        logout.click()
        time.sleep(5)
        print('account', choice_name, 'verified')
        print('logged out')
        browser.quit()
        endTime = time.asctime(time.localtime(time.time()))
        print("process started at: ", '\n', startTime)
        print("Process ended at: ", '\n', endTime)

...

Но если мое имя пользователя или пароль неверны, оно останавливается, и я получаю ошибку (NosuchElementException), ведьма должна ожидать, конечно, потому что, если учетные данные не верны chrome не пропустит страницу входа, а значит не найдет drop_user.

Я получил этот код:

код

while True:
  startTime = time.asctime(time.localtime(time.time()))
print('\n')
usernamelist =  'example@email.com'
passwordstr2 = 'password'


browser = webdriver.Chrome()
browser.maximize_window()


browser.get('https://accounts.spotify.com/en/login?continue=https:%2F%2Fopen.spotify.com%2F')
wait = WebDriverWait(browser, 5)
wait.until(ec.visibility_of_element_located((By.ID, "login-username")))
wait.until(ec.visibility_of_element_located((By.ID, "login-password")))
wait.until(ec.visibility_of_element_located((By.ID, "login-button")))
k = browser.find_element_by_xpath('//*[@id="app"]/body/div[1]/div[2]/div/form/div[3]/div[1]/div/label/span').click()


# log in chrome 1
username = browser.find_element_by_id('login-username')
choice_name = (random.choice(usernamelist))
username.send_keys(choice_name)
print(choice_name)


password = browser.find_element_by_id('login-password')
password.send_keys(passwordstr2)
time.sleep(5)


login_Button = browser.find_element_by_id('login-button')
login_Button.click()
time.sleep(25)

if browser.find_element_by_xpath('//*[@id="app"]/body/div[1]/div[2]/div/div[2]/div/p/span'):
   print('account', choice_name, 'not verified')
   browser.quit()

 else 
      drop_user_ = browser.find_element_by_xpath('//*[@id="main"]/div/div[3]/div[1]/header/div[4]/button/span[2]')
        time.sleep(15)
        drop_user_.click()


        time.sleep(10)


        logout = browser.find_element_by_xpath('//*[@id="main"]/div/div[3]/div[1]/header/div[4]/ul/li[3]')
        time.sleep(15)
        logout.click()
        time.sleep(5)
        print('account', choice_name, 'verified')
        print('logged out')
        browser.quit()
        endTime = time.asctime(time.localtime(time.time()))
        print("process started at: ", '\n', startTime)
        print("Process ended at: ", '\n', endTime)

...

для перезапуска l oop, если используются неверные учетные данные для входа, но если в этом случае мои имя пользователя или пароль верны, я получаю сообщение об ошибке, так как не находит этот элемент:

     browser.find_element_by_xpath('//*[@id="app"]/body/div[1]/div[2]/div/div[2]/div/p/span')

(python не найдет мой оператор if и прерывает время True l oop)

Мой вопрос:

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

1- Я хочу, чтобы мои действительные и недействительные учетные данные были в отдельном текстовом файле. #notepad

(файл 1.txt для учетных записей, которые я хотел бы проверить.)

(Файл 2.txt для учетных записей, которые являются недействительными.)

Как Я делаю это ? Ответьте с полным кодом, пожалуйста.

2 - Я хотел бы запустить этот скрипт 24/7 на сервере AWS .amazon.com ubuntu.

Какой-нибудь специальный код в моем необходим для этого?

Любая помощь / ответы приветствуются!

Заранее спасибо.

...