ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day10-selenium其他场景处理

2022-01-20 18:01:58  阅读:138  来源: 互联网

标签:webdriver 场景 selenium frame driver element switch day10 find


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()

验证码的处理

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

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

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

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

标签:webdriver,场景,selenium,frame,driver,element,switch,day10,find
来源: https://blog.csdn.net/qq_33840688/article/details/122606894

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有