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选择器是最简单好用的

    下一步想法:

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

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

  • 相关阅读:
    令人惊艳的算法——蒙特卡洛采样法
    肺炎确诊人数增长趋势拟合和预测(截止1月28日)
    「07」回归的诱惑:深入浅出逻辑回归
    实现一个简易版Webpack
    nrm——快速切换npm源
    7个有用的JavaScript技巧
    JSON Web Token 是什么?
    【译】强化表单的9个Vue输入库
    【译】如何使用Vue过渡效果来提升用户体验
    【译】JavaScript Source Maps浅析
  • 原文地址:https://www.cnblogs.com/lmt921108/p/12957802.html
Copyright © 2011-2022 走看看