web自动化测试的Selenium高级使用(一)

一、多表单切换     

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

1)什么是多表单?       

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

2)处理方法                

 直接使用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)

案例:

from selenium import webdriver
# 打开浏览器
drive=webdriver.Firefox()
url="https://qzone.qq.com/"
drive.get(url)
#获取表单元素
bd=drive.find_element_by_id("login_frame")
drive.switch_to.frame(bd)
# 定位元素
dlx=drive.find_element_by_id("switcher_plogin")
dlx.click()
# 获取qq
user=drive.find_element_by_id("u")
user.send_keys("269")
# 获取密码
password=drive.find_element_by_id("p")
password.send_keys("shao")
# 获取登录按钮
dl=drive.find_element_by_id("login_button")
dl.click()

结果:

二、多标签之间的切换

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

1)获取所有窗口的句柄       

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

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

driver.switch_to_window(handles[n])                  driver.switch_to.window(handles[n])         通过窗口句柄激活进入某一窗口

案例:

from selenium import webdriver
import time
driver=webdriver.Firefox()
url="http://bj.58.com"
driver.get(url)
hands=driver.window_handles
print(hands)
time.sleep(2)
#定位租房
ss=driver.find_element_by_xpath("//*[@id='fcNav']/em/a[1]")
ss.click()
#获取句柄
hands=driver.window_handles
print(hands)
# 切换句柄
driver.switch_to.window(hands[1])
#获取昌平元素
ss=driver.find_element_by_xpath("html/body/div[5]/div[2]/div[2]/dl[1]/dd/a[4]")
ss.click()
#获取昌平周边元素
ss=driver.find_element_by_xpath("html/body/div[5]/div[2]/div[2]/dl[1]/dd/div/a[4]")
ss.click()

部分结果展示:

 

 

三、弹出框操作          

1) 进入到弹出框中         driver.switch_to.alert     

2) 接收警告         accept()     

3) 解散警告         dismiss()   

 4) 发送文本到警告框         send_keys(data)

案例:

from selenium import webdriver
import time
driver=webdriver.Firefox()
url="https://www.baidu.com"
driver.get(url)
# 获取设置
db=driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[4]/span")
db.click()
# 获取搜索设置
sou=driver.find_element_by_class_name("setpref")
sou.click()
time.sleep(3)
# 定位每页50
ye=driver.find_element_by_id("nr_3")
ye.click()
#定位保存设置
bao=driver.find_element_by_css_selector(".prefpanelgo")
bao.click()
time.sleep(3)
# 弹框
driver.switch_to.alert.accept()

结果:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值