• python基于selenium实现自动删除qq空间留言板


    py大法好,让你解放双手。

    脚本环境

    python环境,selenium库,Chrome  webdriver驱动等。
    

    源码

    # coding=utf-8
    import datetime
    import logging
    import os
    import time
    import traceback
    
    from selenium import webdriver
    from selenium.webdriver import ActionChains
    from selenium.webdriver.chrome.options import Options
    
    
    
    # 日志
    def get_logger(name):
        log = logging.getLogger(name)
        log.setLevel(logging.DEBUG)
        # Standard output handler
        sh = logging.StreamHandler()
        sh.setLevel(logging.DEBUG)
        sh.setFormatter(logging.Formatter('%(levelname)s - %(name)s:%(lineno)s: %(message)s'))
        log.addHandler(sh)
        return log
    logger = get_logger(__file__)
    
    
    def work(browser):
        qq=12345678
    
        browser.get('https://user.qzone.qq.com/{}/main'.format(qq))
        browser.switch_to.frame('login_frame')
        time.sleep(2)
        try:
            browser.find_element_by_id('switcher_plogin').click()
            browser.find_element_by_id('u').clear()
            #你的qq账号
            browser.find_element_by_id('u').send_keys('你的qq账号')
            browser.find_element_by_id('p').clear()
            #你的qq密码
            browser.find_element_by_id('p').send_keys('你的账号密码')
            browser.find_element_by_id('login_button').click()
            time.sleep(2)
            #打开留言板
            writeLog()
            while(True):
                browser.get('https://user.qzone.qq.com/{}/334'.format(qq))
                browser.switch_to.frame('tgb')
                #点击批量管理
                time.sleep(2)
                mouse = browser.find_element_by_id('btnToSet')
                ActionChains(browser).move_to_element(mouse).perform()
                time.sleep(1)
                browser.find_element_by_id('btnBatch').click()
                browser.find_element_by_id('chkSelectAll').click()
                browser.find_element_by_id('btnDeleteBatchBottom').click()
                time.sleep(1)
                browser.switch_to.parent_frame()
                time.sleep(2)
                browser.find_element_by_id('dialog_main_1').find_element_by_class_name('qz_dialog_layer_op').find_element_by_class_name('qz_dialog_layer_sub').click()
                time.sleep(2)
        except:
            print("failure2")
            print(traceback.format_exc())
            writeLog()
    
    
    
    
    
    # 写错误日志并截图
    def writeLog():
        # 组合日志文件名(当前文件名+当前时间).比如:case_login_success_20150817192533
        basename = os.path.splitext(os.path.basename(__file__))[0]
        logFile = "log/"+basename + "-" + datetime.datetime.now().strftime("%Y%m%d%H%M%S") + ".log"
        logging.basicConfig(filename=logFile)
        s = traceback.format_exc()
        logging.error(s)
        browser.get_screenshot_as_file("./" + logFile + "-screenshot_error.png")
    
    
    if __name__ == "__main__":
        chrome_options = Options()
        #chrome_options.add_argument('--headless')
        chrome_options.add_argument('--disable-gpu')
        chrome_options.add_argument('--no-sandbox')
        browser = webdriver.Chrome(options=chrome_options)  # Chrome界面
        # browser = webdriver.PhantomJS()  # 无界面
        work(browser)
        browser.quit()
  • 相关阅读:
    UML类图图示样例
    在WSSv3中通过Javascript和创建Feature扩展站点的动作菜单
    LINQ之Select各种操作
    TroubleShoot: SharePoint工作流不能自动启动
    TroubleShoot:页面上WebPart显示错误
    ECMAScript对列表项的增删改查
    隐藏SharePoint查看所有内容及回收站
    Windows2000计划任务对机器进行重新启动
    CF576E Painting Edges
    CF1491H Yuezheng Ling and Dynamic Tree
  • 原文地址:https://www.cnblogs.com/huanghuizhou/p/10790942.html
Copyright © 2020-2023  润新知