python关键字驱动框架搭建_python webdriver混合驱动测试框架(数据驱动+关键字驱动)...

混合驱动:把数据驱动、关键字驱动结合起来一起使用

testdata.txt

http://www.126.com

http://www.sohu.com

teststep.txt

open||chrome

visit||${url}

sleep||3

主程序脚本

hybrid.py

#encoding=utf-8

import re

from selenium import webdriver

import time

with open("teststep.txt") as fp:

teststeps = fp.readlines()

with open("testdata.txt") as fp:

testdata = fp.readlines()

driver = ""

def open(browser_name):

global driver

if "ie" in browser_name:

driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")

elif "chrome" in browser_name:

driver = webdriver.Chrome(executable_path = "e:\\chromedriver")

else:

driver = webdriver.Firefox(executable_path = "e:\\geckodriver")

def visit(url):

global driver

driver.get(url)

def click(xpath):

try:

driver.find_element_by_xpath(xpath).click()

except:

print("click fail!")

raise

def sleep(times):

time.sleep(int(times))

for data in testdata:

print(data)

for teststep in teststeps:

action = teststep.split("||")[0].strip()

value= teststep.split("||")[1].strip()

if re.search(r"\$\{\w+\}",value):

value=re.sub(r"\$\{\w+\}",data.strip(),value)

try:

command = "%s(\"%s\")" %(action,value)

exec(command)

except:

print("执行",command,"有异常")

driver.quit()

print ("DONE!")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS-cocoapods使用方法

1.CocoaPods的安装及使用:http://code4app.com/article/cocoapods-install-usagehttp://objccn.io/issue-6-4/http://www.jianshu.com/p/5fc15906c53a查看当前的源gem sources -lgem sources --remove https://rubygems.org///等有反应之后再敲入以下命令,添加淘宝镜…

Tomcat 6连接池配置

Tomcat 6,配置了连接池,可是运行总是报HTTP Status 500 - javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class for connect URL null的错误,检查URL没有错啊&#xff01…

Java并发教程–可调用,将来

从Java的第一个发行版开始,Java的美丽之处之一就是我们可以轻松编写多线程程序并将异步处理引入我们的设计中。 Thread类和Runnable接口与Java的内存管理模型结合使用,意味着可以进行简单的线程编程。 但是,如第3部分所述, Thread…

python基本运算符_06-Python基础知识学习---基本运算符

算术运算符python支持的算数运算符与数学上计算的符号使用是一致的(x 5 , y 2):算术运算符描述示例两个对象相加x y 7-两个对象相减x - y 3*两个对象相乘x * y 10/除,返回值保留整数和小数部分x / y 2.5//整除,只保留整数部分x // y …

java wait()和sleep() 的区别

之前在写代码的时候,如果需要让线程等待一会,就直接使用sleep()方法,一直也没有出过问题。而wait()方法的出场率很高,每次打一个句点的时候,对象的方法弹出来,总是能看到wait()在其中,wait()是一…

异常:com.microsoft.sqlserver.jdbc.SQLServerException: 将截断字符串或二进制数据。

com.microsoft.sqlserver.jdbc.SQLServerException: 将截断字符串或二进制数据。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196) at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246) a…

Java中的数据库架构导航

jOOQ的重要组成部分是数据库架构导航模块jooq-meta。 代码生成器使用它来发现相关的架构对象。 我多次被问到为什么我要自己滚动而不使用其他库,例如SchemaCrawler或SchemaSpy ,确实很遗憾我不能依赖其他稳定的第三方产品。 以下是有关数据库架构导航的一…

python自动化测试的工具_python自动化测试(3)- 自动化框架及工具

3 基本示例如下示例也来自于官方文档 basic_demo.py:# coding:utf-8"""基本的自动化测试脚本 basic_demo.py"""__author__ zhengimport unittestclass TestStringMethods(unittest.TestCase):def setUp(self):print init by setUp…

Html转Word文档,解决无法保存网络图片的问题

最近项目中需要这个功能,网上有很多word转html的方法,但是html转word的方法很少,因为html中的图片转换到本地比较麻烦; 开始的时候只能转换不带图片的html内容,但是不符合要求,将html页面中的图片改成绝对路…

一不小心就掉大啦《数组使用注意》

今天程序提交答案总是不对,调试半天才发现本定义的是char s[4]{1,2,3,4} ; 程序运行过程中输出才发现多了一个字符 printf("%s\n"); //结果12349 思前想后觉得可能是没有字符数组结束符 (\0); 特别注意: 定义使用字符型数组时,应…

Java并发教程–阻塞队列

如第3部分所述,Java 1.5中引入的线程池提供了核心支持,该支持很快成为许多Java开发人员的最爱。 在内部,这些实现巧妙地利用了Java 1.5中引入的另一种并发功能-阻塞队列。 队列 首先,简要回顾一下什么是标准队列。 在计算机科学…

json和字符串/数组/集合的互相转换の神操作总结

一:前端字符串转JSON的4种方式 1,eval方式解析,恐怕这是最早的解析方式了。 function strToJson(str){var json eval(( str ));return json; } 2,new Function形式,比较怪异哦。 function strToJson(str){var json (new Funct…

python 修改array_python 基础_ 数组的 增删改查3

数组是运用在多个数据存在一个变量中的,而在调用的时候可以调用所需要的数组。创建数组a [a,b,c,d,f]   #创建一个数组a其中有5个元素分别是abcdf1.查询。所谓的查询就是显示变量a中一个或是一些元素print (a[1])  #打印出a变量中的序列1的元素,我们…

Android实现推送方式解决方案

Android实现推送方式解决方案 本文介绍在Android中实现推送方式的基础知识及相关解决方案。推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息。这种推…

NYOJ 2 括号配对问题

括号配对问题 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述 现在&#xff0c;有一行括号序列&#xff0c;请你检查这行括号是否配对。 输入第一行输入一个数N&#xff08;0<N<100&#xff09;,表示有N组测试数据。后面的…

您应该对什么进行单元测试? –测试技术3

昨天我在办公室里&#xff0c;和我的一位同事谈论测试&#xff0c;他对编写单元测试有些不服气。 他使用的原因之一是有些测试似乎毫无意义&#xff0c;这使我想到了什么是单元测试&#xff0c;什么也不需要打扰。 考虑下面一个简单的不可变的Name Bean&#xff0c;其中包含一…

java基础知识系列---垃圾收集

1 为什么要使用垃圾回收机制&#xff1f; “垃圾收集”暗示程序不再需要的对象就是垃圾&#xff0c;可以被丢弃。更精确&#xff0c;更新的说法是“内存回收”。 1.1 新对象的使用 当一个对象不再被程序所引用时&#xff0c;他所使用的堆空间可以被回收&#xff0c;以便于被后续…

经济

联合国&#xff0c;美苏英法中 国家要外汇储备干什么&#xff1f; 01年加入WTO &#xff0c;美国躲开 WTO 另起炉灶 TPP 诺贝尔经济学奖得主 克鲁格蛮 触动利益比触动灵魂还困难 SDR IMF 转载于:https://www.cnblogs.com/zrui513/p/5014593.html

wxpython的sizer_wxPython BoxSizer布局

Box wx.BoxSizer(wxHORIZONTAL) Box wx.BoxSizer(wxVERTICAL)Add() 方法(从wxSizer继承)它附加到sizer的下一行/列。Box.Add(control, proportion, flag, border)proportion 参数控制的控件响应于所述容器的尺寸改变其大小。各种flag 参数的组合决定控件在sizer的外观。下面是…

NYOJ 6 喷水装置(一)

喷水装置&#xff08;一&#xff09; 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;3描述 现有一块草坪&#xff0c;长为20米&#xff0c;宽为2米&#xff0c;要在横中心线上放置半径为Ri的喷水装置&#xff0c;每个喷水装置的效果都会让以它为…