当前位置: 首页 > article >正文

登录关键字封装

接上篇:Python Selenium 关键字驱动

上篇输入和点击是单个关键字,但是这样的话一个场景下来步骤太长了,有些常见的操作,如写到登录,就要写好几个关键字:

序号测试步骤描述关键字
1打开浏览器openBrowser
2访问测试网址loadUrl
3窗口最大化maximize_browser
4等待126邮箱主页面加载完sleep
5断言当前活动页面中包含 “126网易免费邮一你的专业assert_string_in_page_source
6显示等待frame登录框的出 现.然后切换进入该frame框waitFrameToBeAvailableAndSwitchToIt
7输入登录用户名inputValue
8输入登录密码inputValue
9单击登录按钮clickBtn

这样一个登录就写了9行!可以将登录单独封装一个关键字,抛开打开浏览器访问网址等步骤来说一个登录要定位的至少包含3个元素:用户输入、密码输入、登录按钮,之前封装的关键字都是一个“关键字”,一个“定位方式”,一个“定位值” ,实际Python eval()函数执行是并不知道你这里写的是什么,因此没有必要要一一对应,也可以一个关键字:多个定位方式。多个定制值,多个输入值,如下:

loginxpath,xpath,xpath//input[@name='email'],//input[@name ='password'],//a[@id='dologin']test,abc123

 这样跟之前的关键字有点不一样,拿输入关键字举例之前的关键字代码是这样的:

# 输入框中输入内容
def inputValue(by, locator, value):
    try:
        element = getElement(driver, by, locator)
        # element.click()
        element.send_keys(value)
    except Exception as e:
        raise e

现在就是同一个表格里多了几个值,引起使用分隔符进行分割然后拿到对应的元素定位方法和对应的定位置,操作值即可:

def login(by, locator, value):
    by = by.split(',')
    locator = locator.split(',')
    value = value.split(',')
    user_by, password_by, loginbtn_by = by[0], by[1], by[2]
    user_locator, password_loctor, loginbtn_loctor = locator[0], locator[1], locator[2]
    user_vlalue, pwd_value = value[0], value[1]
    try:
        # 用户名输入框定位
        user_element = getElement(driver, user_by, user_locator)
        user_element.send_keys(user_vlalue)
        # 密码输入框定位
        pwd_element = getElement(driver, password_by, password_loctor)
        pwd_element.send_keys(pwd_value)
        # 登录按钮
        loginbtn_element = getElement(driver, loginbtn_by, loginbtn_loctor)
        loginbtn_element.click()

        # element.click()
    except Exception as e:
        raise e

我这边是用英文逗号分割的,当然也可以用其他符号但是不要和定位表达式里的值冲突就行了


http://www.kler.cn/news/16521.html

相关文章:

  • 使用树莓派(zero2w + Camera Module 3 支持自动对焦 1200 万像素)拍照
  • JavaSE第三章 访问修饰符,Collection,List
  • 是面试官放水,还是公司实在是太缺人?这都没挂,腾讯原来这么容易进···
  • 【MySQL】带你了解MySQL 如何学习MySQL以及MySQL的用途以及意义
  • SQL 使用where字句条件查询
  • 4月23日作业
  • 年薪40万程序员辞职炒股,把一年工资亏光了,得了抑郁症,太惨了
  • 为什么越来越多的企业选择云计算?—分析云计算的优势和未来发展趋势
  • ​力扣解法汇总2404. 出现最频繁的偶数元素
  • 【华为机试】HJ1 字符串最后一个单词的长度
  • 【Vue面试题】vue组件之间如何传值通信
  • pytest - Getting Start
  • 8个免费使用ChatGPT网站,部分可使用gpt4
  • 如何将 github pages 迁移到 vercel 上托管
  • C# ref和out用法和区别
  • 【MySQL入门指南】主键与唯一键的使用与区别
  • 华为OD机试 - 日志首次上报最多积分(Python)
  • CTF ASCII码 密码解密题 简单
  • 《*** 法治思想学习纲要》学习辅导
  • Windows环境安装Elasticsearch和Kibana
  • 模式识别是什么意思
  • 武忠祥老师每日一题||不定积分基础训练(五)
  • RabbitMQ 发布订阅模式,routing路由模式,topic模式
  • 2023-5-2面试题学习
  • 746. 使用最小花费爬楼梯
  • Cell:癌症研究的下一个问题是什么?
  • 大学生学java编程的就业前景怎么样?我来聊聊自己的见解
  • 通过Python的PIL库给图片添加文本水印
  • 【网络协议详解】——GNS3的使用(学习笔记)
  • 计算机网络笔记:TCP协议 和UDP协议(传输层)