1-1

 

b = webdriver.chrom()

b.get('www,baidu.com')

判断是否是百度首页:1,baidu in b.current_url

2,baidu in b.title 

2.元素定位:

ele=find_element_by_id('kw'),

操作:clear,send_keys,

ele.clear(), ele.send_keys('hah')

b.back退回

class_name就是class

by_tagname就是这行的首个标签,如s_ipt的tag——name是input这一行,平行的这行,不是上面

第4课:

元素定位

b = webdriver.chrom()

b.maximize_windows()最大化

ele=b.find_element_by_link_text("企业")  --全部文字

ele=b.find_element_by_partial_link_text("企")  --部分文字

css语法:

ele=b.find_element_by_css_selector('input[class=''s_ipt''])  ---也是在同一个水平线上

5课

 xpath定位:xml路径语言--一级一级查找--绝对路径

b.find_element_xpath('/htlm/body/form/input')

b.find_element_xpath('/htlm/body/form/input[2]')---可以通过下标来找第几个--下标是从1开始

b.get_attribut('type')  --可以打印type的值

6课

找所有的input

ele=b.find_element_by_xpath('//input[2]') ---可以通过下标决定找第几个,从1开始,不弄下标就是代表全部--这是同级的,同级的

也可以根据路径加xpath一起:

b.find_element_by_xpath('//form//input[2]') --form是input的上一个标签,再通过attribute获取值

2.找父节点

ele=b.find_element_by_xpath('//form//input/..')  --通过..找父节点,--//是绝对路径遍地整个文档

ele.tag_name --获取父节点的值为form

 

3,查找个数

ele=b.find_element_by_xpath('//*[count(input)=2]') 

7课:

ele=b.find_element_by_xpath('//*[count(input)=2]/..') --查找父节点--ele.tag_name

ele=b.find_element_by_xpath('//*[=local-name()="input"]/') --然后可以attribute获得相应值

ele=b.find_element_by_xpath('//*[starts-with(local-name),"i"]')  --找出所有以i开头的--ele.tag_name

ele=b.find_element_by_xpath('//*[contain(local-name),"i"]') --找出包含i的元素

ele=b.find_element_by_xpath('//form//*[contain(local-name),"i"]') --form下的i元素

ele=b.find_element_by_xpath('//form//*[contain(local-name),"i")][last()]') --form下的i元素的最后一个元素

ele=b.find_element_by_xpath('//form//*[contain(local-name),"i")][last()-1]') --form下的i元素的倒数第二个

ele=b.find_element_by_xpath('//*[string-length(local-name()=5]') --查找元素长度为5的元素

//xxx|//yyy --多个路径查找

8课-鼠标事件

from selenium import webddriver

b = webdriver.chrom()

b.get('www.baidu.com')

context_click 右击事件

double_click双击事件

drag_and_drop拖动

move_to_element()鼠标停在一个元素上

click_and_hold按下鼠标左键在一个元素上

1,先导入这个模块:

from selenium.webdriver.common.action_chains import ActionChains  --引包

ele = driver.find_element_by_link_text("企业直通班")

ActionChains(driver).move_to_element(ele).perform()--ActionChains(driver)用于生成模拟用户行为,--perform()执行存储行为

sub_ele=driver.find_element_by_link_text("软件测试")

sub_ele.click

键盘事件:先引包 from selenium.webdriver.commom.keys import Keys

send_keys(Keys.BACK_SPACE)退格键

send_keys((Keys.CONTRL,'a')全选

send_keys((Keys.CONTRL,'v')黏贴

send_keys((Keys.CONTRL,'c)复制

send_keys((Keys.CONTRL,'x')剪切

send_keys((Keys,ENTER)回车

eg: 

b.send_keys("python")

b.send_keys(Keys.BACK_SPACE)  --这样上面的python就少来个‘n’

b.send_keys((Keys.CONTRL,'c)  --就把pytho复制下来了

查找页面有没有这个字段 --输入python搜索,页面出现python开发字段

b.seng_keys(python)

ele=b.find_element_by_link_text("python 开发")

9课 对话框和登陆

1,对话框去掉可以用xpath直接复制路径,登陆框可以直接用link_text

2,登陆:

account='maizi_tast@139.com'

pwd='abc123456'

ac_ele = b.find_element_by_id("id_account_1")

ac_ele.send_keys(account)

ac_ele = b.find_element_by_id("id_password_1")

ac_ele.send_keys(pwd)

b.find_element_by_id("login_btn").click()

try:

e_erro=b.find_element_by_link_text("该账号格式不正确")

print("错啦")

10课--多窗口切换

b.get('http://www.baidu.com')  --打开百度

b.find_element_by_id("kw").send_keys("麦子学院") --百度输入框id

b.find_element_by_id("su").click()--百度的百度一下id

b.find_element_by_link_text("专业it职业教育平台").click() ---很多搜索结果-指定结果文字含专业it职业教育平台的点击---这一就有两个窗口来

b.window_handles ---查看有几个句柄--类似有几个窗口,打印的是内存地址

b.switch_to_window(b.window_handles[1]) --切换到第一个窗口,

b.current_url   ---可以查看当前url,看是否切换到第一个窗口

b.current_window_handle   ---查看当前文件句柄的内存地址

b.close()  --关闭

b.quit()--退出

11课--测试脚本中加等待的方法

1,time的sleep方法

2,implicitly_wait()  --设置webdriver的等待时间 --针对所有的

2,WebDriverWait --等待条件满足或者超时后退出--from selenium.webdriver.support.ui import WebDriverWait ---引包 ---针对一个操作-每隔几秒去查找                                                                        

eg:第一种 b.find_element_by_id("kw").send_keys("麦子学院") 

b.implicity_wait(5)

b.find_element_by_id("kw1")  --查找不存在的元素,5秒后退出

第二种:

from selenium.webdriver.support.ui import WebDriverWait 

 

from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
url="http://www.maiziedu.com"
login_text = "登陆"
account ="maizi_test@139.com"
pwd = "abc123456"
def get_ele_time(driver,time,func): ---设置等待的时间,知道啥时候
return WebDriverWait(driver,time).until(func)

def login_test():
d = webdriver.Chrome()
d.get(url)
d.maximize_window()
ele_login = get_ele_time(d,10,lambda d: d.find_element_by_link_text(login_test)
ele_login.click()

account_ele = d.find_element_by_id('id_account_1')
account_ele.send_keys('')
account_ele.clear()
account_ele.send_keys(account)

pwd_ele = d.find_element_by_id('id_password_1')
pwd_ele.clear()
pwd_ele.send_keys(pwd)
d.find_element_by_id("login_btn").click()

try:
d.find_element_by_link_text("该账号格式不正确")
print('错啦')

except:
print("正确")
d.quit()

if _name_ == '_main_':
login_test() #运行这个主函数

12课alter对话框处理 --如警告框,确认框,无法通过元素定位
switch_to_alert()--切到alter--返回alter对象
accept 确认
dismiss 取消
send_keys()有输入框才能使用,否则报错
eg:
b.find_element_by_id("alter").click() --出现一个提示框
alter=d.switch_to_alter() --  切换到alter框
type(c) --查看类型

alter.text  --对话框中显示的文字

alter.accept() --提示框就确认啦

13,测试用例设计 --分模块--简单分为5个模块

1,openbrowser

2,openurl

3,findelement

4,sendkeys

5,chechresult

14课,测试用例模块化

def openbrows()

 return webdriver_handle  --打开一个句柄

ebdriver_handle = webdriver.chrom()  --返回一个打开的文件句柄

handle.get(url) = d.get(url)

2, if  text_id in arg:  --text_id这个元素是否在arg这个字典中,如果有执行下一步

 ele_login = get_ele_time(d,10,lambda d: d.find_element_by_link_text(arg['text_id'])

ele_login.click()

数据设计--字典形式

key                                 val

url                                代开地址

text_id                          登陆元素

userid/pwdid/loginid      输入账号元素

uname/pwd                   输入账号信息

erroid                           检查错误信息

16课:测试用例从文件中导入数据

1,文件txt格式:

文件内容:

url=http://www.maiziedu.com/

text_id=登陆

userid=id_account

pwdid=id_password_1

loginid=login_btn

errorid=该账号格式不正确  

2,读取文件还有一种,不只是open,可以导入模块codes

import codes 

config = codes.open(path,'r','utf-8')

 

 

 17课:测试用例错误处理

1,账号不能为空,密码不能为空,账号格式不正确,账号或密码错误,请重新输入--将错误元素信息添加到数据文件,再修改代码支持错误处理

18课--测试结果保存到文件--先用exe

增加日志接口:loginfo

_init_(self,path="",mode="w"):打开日志文件

log_write(self,msg):写日志

log_closw(self):关闭日志文件

 

 

 

 

 19课:多个账号登陆

1,登陆成功要走注销流程才能下个账号登陆,先在info.text里增加logout信息,方便调用

再定义函数

def logout():

 d.find_element_by_id('usermenu')

 d.find_element_by_id('logout') .click  --这样就注销了

20,使用xlrd读取用户数据---excel

有两个模块支持excel的读写

xlrd:读取excel文件数据

xlsxwrite:写excel文件

安装xlrd和xlsxwrite

pip install xlrd

pip install XLsxWriter

方法:

xl=xlrd.open_workbook("test.xls"):  --打开excel文件

table=xl.sheet()[0]:通过索引获取工作表---获取第一个表

row=table.row_values(0):获取第一行内容

col=table.col_values(0):获取第一列整列内容

table.nrwos:行数

table.ncols:列数

table.cell(0,0).value:单元格值---一个值如:uname

excel里面如果有数字,则读取时候会默认为浮点型,所以要转化

2,excel表格单元类型

0-空,1-str, 2-mum,3-data,4-boolean,5-error

21,excel生成测试报表---xlsxwriter

作用:1,写入,合并单元格,设置单元格格式

2,支持公式,超链接

3,支持插入图片

4,支持生成chart

用法:

1,创建excel :xl=xlsxwriter.Workbook(test.xls);---传路径

2,添加sheet: table=xl.add_worksheet('sheet1')

3,写单元格:table.write_string(0,0,'first')---另外一种方法('A1','first')

4,设置单元格大小: table.set_columm('A:B',15);  ---A到B的宽度为15,a,b两个列框

5,关闭excel: xl.close();

xlsxwriter单元格式:add_format

方法:

color:red  颜色

num_format:yy-mm-dd日期格式

url:www.baidu.com超链接

bold:true加粗

font_size:12字体设置

underline:true下划线设置

bg_color:red单元格颜色

 

转载于:https://www.cnblogs.com/star77/p/11409603.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值