Android安卓-泛微OA Emobile7自动打卡

Emobile 公司使用背景

因为也有不少公司买了这个OA系统,然后一开始都是被吐槽的,超级难用啊!

特别IOS系统的水果机,打卡打1~2分钟,而且不支持高并发的那种,一打就迟到的那种

很久一段时间没有写过,UI自动化了,有兴趣的同学可以玩一下

本次教程使用Python + appium + 一台安卓真机,先简单的面向过程,达到一种简单就可以实现功能的代码这种 肯定low 后面再优化

UI自动化环境搭建

这里说的就是,整个过程只需要,运行Python代码就可以执行,自动打卡即可

  • Java 环境(JDK)
  • Android SDK
  • Android SDK Manager 的配置与使用
  • 模拟器安装 或者 使用真机
  • Appium 客户端
  • Appium 框架包
    如果还没有安装好的可以看看,之前的教程,传送连接

adb常用命令

查询当前设备

adb devices -l

多个设备之间切换

# -s 后面跟的就是 指定设备名称
adb -s 设备名称 shell dumpsys activity | findstr "mFocusedActivity"

查询包名启动名

# 查询包名启动名
adb shell dumpsys activity | findstr "mFocusedActivity"
# 或者
adb shell dumpsys activity activities

UI自动化appium代码

基本配置

导入需要的包

import time

from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

设置appium的基本参数capabilities

  • appPackage:包名
  • appActivity:启动名
    我用的是华为真机,如果是其他机型可能会有说不同,建议通过adb命令去获取,当前打开的应该程序名称为准
# "noReset": True 
# 这个设置的意思是,不对APP进行初始设置

capabilities = {
    "platformName": "Android",
    "platformVersion": "10.0.0",
    "deviceName": "设备名称",
    "appPackage": "com.weaver.emobile7",
    "appActivity": "weaver.fw.com.WelcomeActivity",
    "noReset": True
}

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capabilities=capabilities)


# 获取当前屏幕大小
X = driver.get_window_size()['width']
Y = driver.get_window_size()['height']
time.sleep(2)

当你第一次登陆成功后没有退出,且遇到更新,自动取消更新

# 当你第一次登陆成功后没有退出,且遇到更新,自动取消更新
# for 是为了循环执行3次,等待取消的按钮出现
# 最长等待2秒,每0.5秒检查一次元素,够2秒退出1次循环
# 有找到【取消】按钮就点击一下

# notUpdate
for i in range(3):
    notUpdateBtnE = ("xpath", "//*[@resource-id='com.weaver.emobile7:id/sdl__negative_button']")
    # notUpdateBtnE = ("xpath", "//*[contains(@text,'取消')]")
    try:
        e = WebDriverWait(driver, 2, 0.5).until(EC.presence_of_element_located(notUpdateBtnE))
        e.click()
    except:
        print("没有找到[取消更新]元素")

如果遇到没有权限,就设置允许权限

  • 手机不通提示的权限也不通的,这个是华为的手机
  • ‘始终允许’、‘允许’、‘使用期间允许’,根据机型修改
# phoneAllow
for i in range(3):
    # allowBtnE = ("xpath", "//*[@resource-id='com.android.permissioncontroller:id/permission_allow_button']")
    allowBtnE = ("xpath", "//*[contains(@text,'始终允许')]")
    try:
        e = WebDriverWait(driver, 2, 0.5).until(EC.presence_of_element_located(allowBtnE))
        e.click()
    except:
        print("没有找到[始终允许]元素")

首先设置一个服务地址和登录信息

  • 一开始输入框空白的,所以没有写clear的方法
  • 直接send_keys
# settingAddress
try:
    driver.find_element_by_xpath("//*[@resource-id='com.weaver.emobile7:id/server_edit']").click()
    driver.find_element_by_xpath("//*[@resource-id='com.weaver.emobile7:id/server_edit']").send_keys(
        "你的服务器地址")
    driver.find_element_by_xpath("//*[@resource-id='com.weaver.emobile7:id/btn_login']").click()
except:
    print("没有找到[设置服务器]元素")

try:
    # loginIinformation
    driver.find_element_by_xpath("//*[@resource-id='loginid']").click()
    driver.find_element_by_xpath("//*[@resource-id='loginid']").send_keys("你的账户")

    driver.find_element_by_xpath("//*[@resource-id='userpassword']").click()
    driver.find_element_by_xpath("//*[@resource-id='userpassword']").clear()
    driver.find_element_by_xpath("//*[@resource-id='userpassword']").send_keys("你的密码")
    time.sleep(2)
    driver.find_element_by_xpath("//android.widget.Button[contains(@text,'登 录')]").click()
    except:
    print("没有找到[登录]元素")

登录后进入工作台


try:
    driver.find_element_by_xpath("//*[@resource-id='com.weaver.emobile7:id/address_image']").click()
    time.sleep(3)
except:
    print("没有找到[工作台]元素")

time.sleep(2)
ImageBtn = ("xpath",
            "//*[@resource-id='entrance-page']/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[11]/android.view.View/android.widget.Image")

Ie = WebDriverWait(driver, 2, 0.5).until(EC.presence_of_element_located(ImageBtn))
Ie.click()

进入打卡页面,获取位置权限

  • 位置权限,上面的设置也是一样的
  • 找到打卡的按钮,点击就可以完成打卡,并退出自动化的驱动
# phoneLocationAllow
for i in range(3):
    allowBtnE = ("xpath", "//*[@resource-id='com.android.permissioncontroller:id/permission_allow_always_button']")
    try:
        e = WebDriverWait(driver, 2, 0.5).until(EC.presence_of_element_located(allowBtnE))
        time.sleep(3)
        e.click()
    except:
        print("没有找到[位置]元素")

time.sleep(3)
try:
    ele = driver.find_element_by_xpath("//*[@text='打卡']")
    ele.click()
    print("ok")
except:
    print("没有找到[打卡]元素")

time.sleep(5)

driver.quit()

UI自动化如何执行起来

  1. python 可以加定时器任务
  2. 远程电脑执行这个代码
  3. 当然是有一台手机一直连接电脑,并且有网络
  4. time.sleep 防止加载慢导致找不到元素
  5. try是因为有些元素不知道什么时候有或者没有

emobile7 部分截图

在这里插入图片描述

Android安卓-UI自动打卡Appium+PO+Pytest(1)

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 泛微OA是一款集成办公系统,在工作流程中可以设置发起节点自动提交的功能。发起节点指的是工作流程的第一个节点,即由员工发起的申请或者流程。 通过在泛微OA系统中的流程设计器中设置发起节点自动提交的规则,可以实现在发起节点处自动提交流程。具体步骤如下: 1. 打开泛微OA系统中的流程设计器,选择需要设置自动提交的流程。 2. 找到流程图中的发起节点,双击进入节点设置界面。 3. 在节点设置界面中,找到“操作规则”或者类似的选项,点击进入操作规则设置界面。 4. 在操作规则设置界面中,找到“自动提交”或者类似的选项,勾选该选项。 5. 根据需要,可以设置自动提交的条件和触发时机。例如,可以设置当所有必填字段都填写完毕后,自动提交流程;或者设置在某个字段的值满足某个条件时,自动提交流程。 6. 保存设置并退出节点设置界面。 通过以上步骤,就可以实现在泛微OA系统中的发起节点自动提交的功能。这样,当员工发起申请或者流程时,系统会根据设置的规则,自动提交流程到下一个节点,提高工作效率和流程的处理速度。 需要注意的是,自动提交功能的设置需要按照实际需求和流程的特点来进行设置,以确保流程的顺利进行和数据的准确性。 ### 回答2: 泛微OA是一款功能强大、灵活易用的企业办公自动化系统。在工作流程中,发起节点自动提交是指在某个节点的审批环节中,系统可以根据预设的条件自动提交审批。 具体来说,如果在一个工作流程中,某个节点的审批人为空或者审批人已经提前设置好,并且符合条件的表达式是真,则该节点可以自动提交。这样可以大幅度提高工作流程的自动化程度和效率。 发起节点自动提交的好处有以下几点: 1.节省时间与精力:当工作流程中的某些节点不需要人工干预即可通过审批时,无须手动提交,减少了操作的复杂性,节省了员工的时间和精力。 2.提高效率:发起节点自动提交能够在瞬间完成审批,避免了因为人工操作而导致的延误。对于一些简单、常规的审批流程,自动提交可以大大提高效率。 3.减少错误:自动提交减少了人工操作的干预,降低了因为人为失误而产生的错误。系统可以根据预设的条件准确地判断是否需要自动提交,并避免了疏忽造成的错误。 需要注意的是,在设置发起节点自动提交时,应综合考虑流程的实际情况和要求,合理设置条件和审批人,避免滥用自动提交功能导致流程的不灵活或者不当。 ### 回答3: 泛微OA是一种办公自动化软件系统,它可以提供企业内部各个部门之间的协作和沟通平台。在泛微OA中,发起节点自动提交是指当在某个流程节点中设置了发起节点自动提交的设置后,流程在经过该节点时会自动提交到下一个节点,而无需手动操作。 发起节点自动提交的功能在流程中具有一定的便利性和效率提升作用。首先,它可以节省每个节点的手动提交操作的时间和精力,避免了繁琐的操作流程。其次,它可以在一些特定场景下提高流程的灵活性和处理速度,如需要在某个节点进行自动审核或批复时,可以通过发起节点自动提交功能,实现自动流转至下一个节点,快速完成整个流程。 然而,需要注意的是,发起节点自动提交的设置需要谨慎使用,因为一旦设置不当可能会导致流程在未经充分审批的情况下进行下一步操作,从而引发一些潜在的问题和风险。因此,在使用泛微OA时,需要根据实际业务和流程需求,合理设置发起节点自动提交的规则和权限,确保流程能够顺利、合规地进行。 总而言之,泛微OA的发起节点自动提交功能可以提高流程的效率和便利性,但需要谨慎设置,避免潜在的问题和风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值