python自动化等待时间_Appium python自动化测试系列之等待函数如何进行实战(九)...

可能又有人会提出疑问说:为什么你这了又driver,我没有啊,或者说我按照你强制等待那样将启动的封装了,然后隐式等待我也这样封装了,然后我这个就报错了,为什么?首先思考一下,你回去把我们生成driver的地方去掉封装,然后运行这样的一句话就不是就不会报错,尝试一下。但是封装就报错,为什么?因为我们这里没有把driver返回出去,也就是说我们需要用到的driver现在是没有被定义的,那么肯定会报错,那我如何和前面的代码一样封装呢?看下面:

第二电脑网对《Appium python自动化测试系列之等待函数如何进行实战(九)》总结来说,为我们python基础很实用。#conding="utf-8"

import time

from appium import webdriver

import os

def Case(platformName,platformVersion,deviceName,app,appPackage,appActivity):

PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))

#print getConfig("baseconf", "platformName")

desired_caps = {}

desired_caps['platformName'] = platformName #设置平台

desired_caps['platformVersion'] = platformVersion #系统版本

desired_caps['deviceName'] = deviceName #设备id

desired_caps['autoLaunch'] = 'true' #是否自动启动

desired_caps['noReset'] = 'true'

desired_caps['newCommandTimeout'] = 20

desired_caps['app'] = PATH(app)#安装包路径,放在该py文件的目录下)

desired_caps['appPackage'] = appPackage #包名

desired_caps['appActivity'] = appActivity #启动的activity

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

waitFor(5)

return driver

#等待函数

def waitFor(t):

time.sleep(t)

#隐式等待

def implicit_for_wait(t):

driver = Case(platformName,platformVersion,deviceName,app,appPackage,appActivity)

driver.implicitly_wait(t)

再回过头去看代码是不是发现了不一样的地方?这里我们将初始化的driver进行了一个闭包,也就是给出了一个返回值,然后我们在隐式等待中将我们的driver进行调用,然后他就拥有了driver,所以这个时候就能够像上面的代码一样进行调用该等待方法了。

9.4 显式等待

前面我们讲了隐式等待和强制等待,下面我们看看显示等待,同样的先看代码:

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

首先我们来弄明白这个方法里面几个参数的含义:

1、driver:是我们操作的driver。

2、timeout:超时时间,也就是我们找这个元素要找多久

3、poll_frequency:间隔时间,怎么理解?就是说在超时时间内每多少秒去查询一次,默认情况是0.5秒一次

4、ignored_exceptions:异常,就是没有找到程序抛出什么异常。在默认情况是跑出:NoSuchElementException

在一般情况下我们只需要填写前面两个就行。看到这里是否发现一个问题,这个也没有定位元素,只是driver和时间。是不是也是全局的呢?答案肯定是否定的。在一般的情况下显式等待是需要和其他方法一起结合的,看下面完整的代码:

driver = self.driver

WebDriverWait(driver, 10,5).until(lambda driver:driver.find_element_by_id("ssss"))

这个代码是不是又看不懂了?我们再接着按照刚才的方法把这个代码重构一下:

#conding="utf-8"

import time

from appium import webdriver

import os

def Case(platformName,platformVersion,deviceName,app,appPackage,appActivity):

PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))

#print getConfig("baseconf", "platformName")

desired_caps = {}

desired_caps['platformName'] = platformName #设置平台

desired_caps['platformVersion'] = platformVersion #系统版本

desired_caps['deviceName'] = deviceName #设备id

desired_caps['autoLaunch'] = 'true' #是否自动启动

desired_caps['noReset'] = 'true'

desired_caps['newCommandTimeout'] = 20

desired_caps['app'] = PATH(app)#安装包路径,放在该py文件的目录下)

desired_caps['appPackage'] = appPackage #包名

desired_caps['appActivity'] = appActivity #启动的activity

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

waitFor(5)

return driver

#等待函数

def waitFor(t):

time.sleep(t)

#隐式等待

def implicit_for_wait(t):

driver = Case(platformName,platformVersion,deviceName,app,appPackage,appActivity)

driver.implicitly_wait(t)

#显示等待

def wait(t):

driver = Case(platformName,platformVersion,deviceName,app,appPackage,appActivity)

WebDriverWait(driver, 10,5).until(lambda driver:driver.find_element_by_id("ssss"))

这里python基础不好的读者会有一定困难,前面的不讲解。先看lambda后面的代码,他是一个匿名函数,冒号前面的是参数,冒号后面的是返回值,driver是我们需要传入的一个参数,类似下面的代码:

更多:Appium python自动化测试系列之等待函数如何进行实战(九)

https://www.002pc.comhttps://www.002pc.com/python/3552.html

你可能感兴趣的Appium,python,实战,自动化,测试,函数

No alive nodes found in your cluster

0踩

0 赞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值