selenium登录网易云音乐并签到

此例中值得注意的地方是frame的切换,切换到某个frame可以用 browser.switch_to.frame('frame_name') 返回上一级可以用 browser.switch_to.parent_frame() 

全部代码如下:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time

class Music163:
    def __init__(self):
        url = 'https://music.163.com'
        options = webdriver.ChromeOptions()
        options.add_argument('--headless')
        self.browser = webdriver.Chrome(executable_path='D:\\Program Files (x86)\\chromedriver.exe', chrome_options=options)
        self.browser.maximize_window()
        self.browser.get(url=url)
        self.wait = WebDriverWait(self.browser, 10)

    def login(self, username, password):
        self.browser.switch_to.frame('contentFrame')
        self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#index-enter-default'))).click()
        self.browser.switch_to.parent_frame()
        self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#otherbtn'))).click()
        self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#j-official-terms'))).click()
        self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.u-btn2-2'))).click()
        self.wait.until(EC.presence_of_element_located((By.ID, 'p'))).send_keys(username)
        self.wait.until(EC.presence_of_element_located((By.ID, 'pw'))).send_keys(password)
        self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.u-btn2-2'))).click()
        time.sleep(3)

    def sign_in(self):
        self.browser.switch_to.frame('contentFrame')
        self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.btnwrap>a'))).click()

    def __del__(self):
        self.browser.close()

if __name__ == '__main__':
    m = Music163()
    m.login('username', 'password')
    m.sign_in()

猜你喜欢

转载自www.cnblogs.com/pau1fang/p/13198943.html