zoukankan      html  css  js  c++  java
  • 2019-02-13 扇贝自动打卡贼简单版

    下午背单词突然想搞点骚操作
    于是用selenium写了个简单的东西
    就是模拟鼠标点击啦,几行代码搞定
    发现chrome的开发者模式可以帮你直接搞到xpath的selector,我居然还在自己写,还出错了好几次

    代码很简单 就是:登录——进入学习页面——循环点击
    没有try except,没有考虑任何出错的情况

    def login(username,password):
        drive = webdriver.Chrome()
        url = "https://web.shanbay.com/web/account/login"
        drive.get(url)
        time.sleep(2)
        user = drive.find_element_by_id("input-account")
        user.send_keys(username)
        drive.find_element_by_id("input-password").send_keys(password)
        drive.find_element_by_id("button-login").click()
        time.sleep(5)
        drive.find_element_by_xpath("//*[text()='单词']").click()
        time.sleep(5)
        drive.find_element_by_xpath("//*[text()='开始学习']").click()
        for i in range(0,200):
            time.sleep(3)
            drive.find_element_by_xpath("//*[text()='认识']").click()
            time.sleep(4)
            drive.find_element_by_css_selector("#learning-box > div.test-box.span12.learning-detail-container > div:nth-child(9) > div > a").click()
            time.sleep(2)
        drive.close()
    

    经测试,改动了一些东西:
    加入try except
    然后发现不同页面的按钮对应的selector会变化,所以加入了遍历查找,然后成功完成今天300单词的任务(滑稽

    玩归玩,英语还是要好好学的

    def login(username,password):
        drive = webdriver.Chrome()
        url = "https://web.shanbay.com/web/account/login"
        drive.get(url)
        user = drive.find_element_by_id("input-account")
        user.send_keys(username)
        drive.find_element_by_id("input-password").send_keys(password)
        drive.find_element_by_id("button-login").click()
        time.sleep(2)
        drive.find_element_by_xpath("//*[text()='单词']").click()
        time.sleep(2)
        drive.find_element_by_xpath("//*[text()='开始学习']").click()
        time.sleep(2)
        for i in range(0,100):
            try :
                drive.find_element_by_xpath("//*[text()='认识']").click()
            except:
                pass
            time.sleep(3)
            try :
                for n in range(0,10):
                    try:
                        if drive.find_element_by_css_selector("#learning-box > div.test-box.span12.learning-detail-container > div:nth-child("+str(n)+") > div > a"):
                            drive.find_element_by_css_selector("#learning-box > div.test-box.span12.learning-detail-container > div:nth-child("+str(n)+") > div > a").click()
                            break
                    except:
                        continue
                if drive.find_element_by_css_selector("#summary-box > div.span9 > div:nth-child(3) > div > a"):
                    drive.find_element_by_css_selector("#summary-box > div.span9 > div:nth-child(3) > div > a").click()
            except:
                pass
            time.sleep(3)
        drive.close()
    
  • 相关阅读:
    【WPF】ListBox GridViewColumn Header 文字换行、文字多行显示
    【Unity】讯飞语音识别SDK
    【Unity】UGUI无法修改UI元素的Pivot锚点位置
    【Unity】EasyTouch5触屏检测
    【Unity】序列化字典Dictionary的问题
    【WPF】自定义形状的按钮Button
    【WPF】图片按钮的单击与双击事件
    【Unity】ShareSDK、SMSSDK的基本使用与常见问题
    【Unity】不能新建项目
    【Java】移动JDK路径后,修改环境变量不生效 Error: could not open `C:Program FilesJavajre1.8.0_131libamd64jvm.cfg'
  • 原文地址:https://www.cnblogs.com/roccoshi/p/13027091.html
Copyright © 2011-2022 走看看