zoukankan      html  css  js  c++  java
  • selenium 自动登录OA写周报

    目的:

    上周连不上网,最后委托别人帮我写的周报,

    基于最近在学校selenium自动化,便想着可以尝试下自动化写周报;

    代码:

    #!/usr/bin/evn python
    #-*- coding:utf-8 -*-
    
    """
    测试oa自动写周报
    """
    
    
    import time 
    from selenium import webdriver
    from getpass import getpass
    
    
    def write_content(content=""):
        driver.switch_to.frame(driver.find_element_by_css_selector('iframe[name="mainFrame"][id="mainFrame"]'))
        driver.switch_to.frame(driver.find_element_by_css_selector('iframe[name="tabcontentframe"][id="tabcontentframe"]'))
        driver.switch_to.frame(driver.find_element_by_id("ueditor_0"))
        driver.find_element_by_css_selector("html>body").send_keys(content)
        driver.switch_to.default_content()   #  退出刚刚进入的iframe框架
        pass
    
    def write_question(question=""): # 遇到的问题 driver.switch_to.frame(driver.find_element_by_css_selector('iframe[name="mainFrame"][id="mainFrame"]')) driver.switch_to.frame(driver.find_element_by_css_selector('iframe[name="tabcontentframe"][id="tabcontentframe"]')) driver.switch_to.frame(driver.find_element_by_id("ueditor_1")) driver.find_element_by_css_selector("html>body").send_keys(question) driver.switch_to.default_content() pass def write_plan(plan=""): # 下周计划 driver.switch_to.frame(driver.find_element_by_css_selector('iframe[name="mainFrame"][id="mainFrame"]')) driver.switch_to.frame(driver.find_element_by_css_selector('iframe[name="tabcontentframe"][id="tabcontentframe"]')) driver.switch_to.frame(driver.find_element_by_id("ueditor_2")) driver.find_element_by_css_selector("html>body").send_keys(plan) driver.switch_to.default_content() if __name__ == "__main__": import sys args = sys.argv user = args[1] passwd = args[2] content = args[3] question = args[4] plan = args[5] driver = webdriver.Firefox() driver.implicitly_wait(10) driver.get("http://oa.novogene.com/login/Login.jsp?gopage=&_token_=c8fe74ed-57dd-4d99-8276-f85cc3b794d4") # driver.switch_to.alert().accept() # OA登陆 driver.find_element_by_id("loginid").clear driver.find_element_by_id("loginid").send_keys(user) driver.find_element_by_id("userpassword").send_keys(passwd) driver.find_element_by_id("login").click() time.sleep(5) # 点击周报按钮 driver.find_element_by_css_selector('.topMenuDiv div div[title="周报"]').click() time.sleep(5) driver.find_element_by_css_selector('ul li div a[title="填写周报"] div span span').click() time.sleep(5) write_content(content) write_question(question) write_plan(plan) # 保存 driver.switch_to.frame(driver.find_element_by_css_selector('iframe[name="mainFrame"][id="mainFrame"]')) driver.find_element_by_css_selector('div div div div div div div span input').click() driver.switch_to.default_content() # 退出刚刚进入的iframe框架 # 关闭窗口 driver.quit()

    说明:

    1、主要是涉及到嵌套iframe,对于嵌套iframe,我们需要逐步进入到我们需要输入内容的地方

    2、css选择器的一些语法,学到现在,发现css选择器是最简单好用的

    下一步想法:

    可以写个自动化提醒,提醒自己不要忘记写周报,

    如果忘记了,就自动帮我们写个周报

  • 相关阅读:
    洛谷P5173 传球(暴力)
    uoj#402. 【CTSC2018】混合果汁(主席树+二分)
    uoj#401. 【CTSC2018】青蕈领主(分治FFT)
    uoj#400. 【CTSC2018】暴力写挂(边分治)
    uoj#399. 【CTSC2018】假面(概率期望)
    P4769 [NOI2018]冒泡排序(dp)
    洛谷P3688/uoj#291. [ZJOI2017]树状数组
    uoj#290. 【ZJOI2017】仙人掌(数数+仙人掌+树形dp)
    Git环境部署
    mysql修改密码
  • 原文地址:https://www.cnblogs.com/lmt921108/p/12957802.html
Copyright © 2011-2022 走看看