day10-selenium其他场景处理

frame

在web应用中经常会出现frame的嵌套应用,假设页面上有A,B两个frame,B在A内,具体思路

  • 使用switch_to.frame()方法,把当前定位的主体切换到B frame里

  • 使用switch_to.default_content()从B frame切换回A frame

driver.switch_to.frame()   # 切换到frame内操作 括号内写定位器 定位frame语句 find_element
driver.switch_to.default_content()  # 切换回默认主体内操作

使用frame登录qq邮箱

from selenium import webdriver
​
​
driver = webdriver.Chrome(r'D:\Program Files (x86)\Chromedriver\chromedriver_win32\chromedriver.exe')
​
driver.get('https://mail.qq.com/')
driver.maximize_window()    # 最大化窗口
driver.switch_to.frame(driver.find_element('id', 'login_frame'))    # 切换到frame
driver.find_element('id', 'u').send_keys('')  # 定位并输入账号
driver.find_element('id', 'p').send_keys('')   # 定位并输入密码
driver.find_element('id', 'login_button').click()   # 定位登录按钮并点击
​

文件上传

driver.find_element('type', 'file').send_keys('文件绝对路径')

上传文件可以直接定位到上传文件的input元素,使用send_keys发送本地文件的绝对路径。

这个方法只有在上传文件功能使用html自带的input type='file'时才有效。有的网站上传文件的功能是使用另外封装的方法,这时send_keys就无效了

多窗口切换

有时自动化操作会在多个窗口来回操作,webdriver提供了很好的解决方案,使用driver.switch_to().window(handle)来切换窗口

from selenium import webdriver
import time
​
driver = webdriver.Chrome(r'D:\Program Files (x86)\Chromedriver\chromedriver_win32\chromedriver.exe')
​
driver.get('https://www.baidu.com/')
driver.maximize_window()
current_handle = driver.current_window_handle   # 记录主页面的handle
driver.find_element('class name', 'title-content').click()  # 点击链接
driver.switch_to.window(driver.window_handles[1])   # 切换到新的窗口
time.sleep(2)
driver.switch_to.window(current_handle)     # 切换回主窗口
driver.find_element('id', 'kw').send_keys('python')

悬浮菜单

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains    # 操作链
​
driver = webdriver.Chrome(r'D:\Program Files (x86)\Chromedriver\chromedriver_win32\chromedriver.exe')
​
driver.get('https://www.baidu.com/')
​
ActionChains(driver).move_to_element(driver.find_element('id', 's-usersetting-top')).perform()  # 将鼠标移动到指定元素上
driver.find_element('link text', '高级搜索').click()

验证码的处理

  • 自动化测试在某些场景需要填写验证码,增强了安全性,但是对测试人员来说,都是一个棘手的问题

  • 目前最快解决的聊个手段:

    • 去掉验证码:比较适合于新开发但未上线的系统

    • 设置万能码:比较适合于已经上线使用的系统。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值