Python+Selenium自动化测试之时间等待

目录

为什么进行时间等待?

时间等待的三种方式:

1.强制等待

2.隐式等待(智能等待)

3.显式等待

常搭配异常处理处理使用

语法格式:

lambda表达式

异常处理


为什么进行时间等待?
  • 模拟用户真实使用场景

  • 防止代码因非语句错误而报错-----页面未完全加载完成时定位元素会报错

时间等待的三种方式:
1.强制等待
  • 当代码执行到强制等待语句时,会等待给定的时间参数

  • 需要导包(两种方式)

    import time
    time.sleep(3) #等待三秒
    
    from time import sleep
    sleep(3)
2.隐式等待(智能等待)
  • 等待页面元素全部加载完成,需要传参【最长等待时间】。规定时间内加载完成后不会再进行等待

  • 无需导包

    driver.implicitly_wait(10)
3.显式等待
常搭配异常处理处理使用
语法格式:
  • 等待页面指定元素加载完成,需要传参【驱动】【最长等待时间】【检测频率】

  • 需要导包

  • 设置显式等待,将driver作为参数传给lambda表达式。

  • 检测某个元素是否存在

#第一种方法
WebDriverWait(driver, 10, 1).unit(lambda x: x.find_element(By.XPATH, '//*[@id="fmsearch"]/div/button'))

#第二种方法
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 判断元素是否可见(页面是否显示该元素),可见返回该元素,不可见抛异常
#传参为元组,元组内第一个参数是定位元素的方法,第二个参数是该元素的属性
EC.visibility_of_element_located((By.ID, 'ID'))
WebDriverWait(driver, 10, 1).unit(EC.visibility_of_element_located((By.ID, 'ID')))
lambda表达式
# lambda表达式:一句话函数,格式为:参数列表:返回值
var = lambda x: x * 2


def func(x):
    return x * 2

def add(a, b):
    return a + b
#	||
#   ||等同于
#   \/
add_num = lambda a, b: a + b
异常处理
  • 可以导包也可不导包(导需要用到的异常包)

  • from selenium.webdriver.support.wait import WebDriverWait
    try:
      button = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element(By.XPATH, '//*[@id="fmsearch"]/div/button'))
                button.click()
    except:
         print('定位失败!')
         raise
    # raise 主动抛出异常 

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要用代码编写Python + selenium自动化测试平台,涉及到的技术和步骤比较多,需要一定的开发经验和技能。以下是一个简单的Python + Flask自动化测试平台示例,供您参考: 1. 安装Python和Flask模块; 2. 安装浏览器驱动程序,如ChromeDriver或GeckoDriver; 3. 创建一个Flask应用,并设置路由; 4. 在路由中编写测试函数,包括打开网页、填写表单、点击按钮等操作,并使用断言来验证测试结果; 5. 在路由中渲染HTML模板,以展示测试结果; 6. 运行Flask应用,访问测试平台。 以下是一个简单的示例代码,演示如何使用Python和Flask搭建自动化测试平台: ```python # 导入selenium模块 from selenium import webdriver from selenium.webdriver.common.keys import Keys # 导入Flask模块 from flask import Flask, request, render_template # 设置Chrome浏览器驱动路径 driver_path = '/path/to/chromedriver' # 根据自己的实际路径修改 # 创建一个Flask应用 app = Flask(__name__) # 定义测试路由 @app.route('/test', methods=['GET', 'POST']) def test(): if request.method == 'POST': # 获取表单数据 url = request.form['url'] keyword = request.form['keyword'] # 创建一个Chrome浏览器对象 browser = webdriver.Chrome(executable_path=driver_path) # 打开网页 browser.get(url) # 查找搜索框元素,并输入搜索内容 search_box = browser.find_element_by_name('q') search_box.send_keys(keyword) search_box.send_keys(Keys.RETURN) # 等待搜索结果加载完成 browser.implicitly_wait(10) # 断言搜索结果是否包含关键字 assert keyword in browser.page_source # 关闭浏览器 browser.quit() # 渲染HTML模板,展示测试结果 return render_template('result.html', url=url, keyword=keyword) # 如果是GET请求,返回测试页面 return render_template('test.html') # 运行Flask应用 if __name__ == '__main__': app.run(debug=True) ``` 这段代码创建了一个Flask应用,定义了一个名为“/test”的路由。在该路由中,如果是GET请求,会渲染一个名为“test.html”的HTML模板,展示测试表单。如果是POST请求,会获取表单数据,打开指定网页,搜索指定关键字,并断言搜索结果。最后,会根据测试结果渲染一个名为“result.html”的HTML模板,展示测试结果。 要运行这个自动化测试平台,您需要在终端中进入代码所在的目录,执行以下命令: ``` export FLASK_APP=test_platform.py flask run ``` 其中,“test_platform.py”是代码文件名。执行该命令后,Flask会启动应用,并监听localhost:5000端口。您可以在浏览器中访问该地址,即可进入测试平台。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值