Web自动化测试进阶(二)

Selenium API高级

多标签之间的切换

场景:有的时候点击一个链接,新页面并非由当前页面跳转过去,而是新开一个页面打开,这种情况下,计算机需要识别多标签或窗口的情况。

获取所有窗口的句柄

handles = driver. window_handles

调用该方法会得到一个列表,在selenium运行过程中的每一个窗口都有一个对应的值存放在里面。

通过窗口的句柄进入的窗口

driver.switch_to_window(handles[n])                  

driver.switch_to.window(handles[n])

通过窗口句柄激活进入某一窗口

 案例: 58同城租房信息:http://bj.58.com

 

多表单切换

在网页中,表单嵌套是很常见的情况,尤其是在登录的场景

什么是多表单?

实际上就是使用iframe/frame,引用了其他页面的链接,真正的页面数据并没有出现在当前源码中,但是在浏览器中我们看到,简单理解可以使页面中开了一个窗口显示另一个页面

处理方法

直接使用id值切换进表单             

driver.switch_to.frame(value)/driver.switch_to_frame(value)         

定位到表单元素,再切换进入             

el = driver.find_element_by_xxx(value)             

driver.switch_to.frame(el)/driver.switch_to_frame(el)

案例: QQ空间:https://qzone.qq.com/         

 

126网站登录:https://www.126.com/     (需要谷歌的操作)

 

弹出框操作

进入到弹出框中

driver.switch_to.alert

接收警告

accept()

解散警告

dismiss()

发送文本到警告框

send_keys(data)

 滚动条操作

js = ‘window.scrollTo(0,b)‘          #b表示距离定位的距离

driver.execute_script(js)            #执行js脚本

滚动条回到顶部

js = "window.scrollTo(0,0)"或者 js=“var q=document.documentElement.scrollTop=0“

滚动条回到底部

js = “window.scrollTo(0,document.body.scrollHeight)”

js="var q=document.documentElement.scrollTop=10000“

滚动条拉到指定位置(具体元素):--最常用

target = driver.find_element_by_id(“id_keypair”)  #定位移动到的元素 driver.execute_script("arguments[0].scrollIntoView();", target)

鼠标和键盘操作

手动测试时键盘的操作在selenium页有实现,关于鼠标的操作由ActionChains()类来提供,关于键盘的操作由Key()类来提供

鼠标操作

导入动作链类,动作链可以储存鼠标的动作

from selenium.webdriver import ActionChains

 获取元素                                                                                                                            

el = driver.find_element_by_xxx(value)         

context_click(el)     对el执行右击         

执行ActionChains中储存的所有动作                       

perform()

例子

ActionChains(driver).context_click(ele).perform()     点击鼠标右键                 ActionChains(driver). click(ele).perform()            点击鼠标左键           ActionChains(driver).move_to_element(el).perform() 鼠标悬停

键盘操作

键盘操作使用的是Keys类,一般配合send_keys使用

导入

from selenium.webdriver.common.keys import Keys

常用键盘操作

send_keys(Keys.BACK_SPACE)     删除键(BackSpace)                         send_keys(Keys.SPACE)         空格键(Space)                          

send_keys(Keys.TAB)             制表键(Tab)                          

send_keys(Keys.ESCAPE)         回退键(Esc)                          

send_keys(Keys.ENTER)         回车键(Enter)                         send_keys(Keys.CONTROL,‘a’)     全选(Ctrl+A)

浏览器等待

为什么要进行等待?

网速慢

网站内容过多      

如果不进行等待而直接定位元素,可能会抛出异常

内容加载慢

selenium中等待的分类

强制等待                  

显示等待                  

隐式等待

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值