selenium UI使用小技巧集合
selenium这个工具就不用我多介绍了吧,咱们已经说过很多很多次咯,所以就直接上主题:
— 1 —
窗口截图
webdriver 提供了 get_screenshot_as_file()函数来截取当前窗口
from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.get('http://www.baidu.com') # 截屏,截取整个页面 driver.get_screenshot_as_file("./all.png") # 截屏,截取单个元素 ele = driver.find_element_by_id('kw') ele.screenshot("./ele.png") driver.quit()
— 2 —
警告框处理
在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ send_keys等方法进行操作
-
text:返回 alert/confirm/prompt 中的文字信息
-
accept():接受现有警告框
-
dismiss():取消现有警告框
-
send_keys(“haha”):发送文本至警告框
from selenium import webdriver import time driver = webdriver.Chrome() driver.implicitly_wait(5) driver.get("D:\\test\script\study\seleniumStu\day6\警告框.html") # # 触发对话框 # driver.find_element_by_id("bu1").click() # al = driver.switch_to.alert # time.sleep(3) # al.accept() # 确认对话框 # # 触发确认框 # driver.find_element_by_id("bu2").click() # al = driver.switch_to.alert # al.accept() # 确认对话框 # driver.find_element_by_id("bu2").click() # al.dismiss() # 取消对话框 # 触发提示框 driver.find_element_by_id("bu3").click() al = driver.switch_to.alert al.send_keys("口罩太贵了") al.accept() # 确认对话框 time.sleep(3) driver.quit()
— 3 —
鼠标事件
用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供了一个类来处理这类事件——ActionChains
ActionChains 类提供了鼠标操作的常用方法:
-
perform():执行操作
-
context_click():右击;
-
double_click():双击;
-
drag_and_drop():拖动;
-
move_to_element():鼠标悬停。
from selenium import webdriver # 引入 ActionChains 类 from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get("https://www.baidu.cn") # 定位到要悬停的元素 above = driver.find_element_by_link_text("设置") # 对定位到的元素执行鼠标悬停操作 ActionChains(driver).move_to_element(above).perform() driver.quit()
— 4 —
键盘事件
Keys()类提供了键盘上几乎所有按键的方法。前面了解到, send_keys()方法可以用来模拟键盘输入, 除此 之外, 我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A、 Ctrl+C 等
from selenium import webdriver # 引入 Keys 模块 from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.get("http://www.baidu.com") # 输入框输入内容 driver.find_element_by_id("kw").send_keys("seleniumm") # 删除多输入的一个 m driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE) # 输入空格键+“教程” driver.find_element_by_id("kw").send_keys(Keys.SPACE) driver.find_element_by_id("kw").send_keys("教程") # ctrl+a 全选输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a') # ctrl+x 剪切输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x') # ctrl+v 粘贴内容到输入框 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v') # 通过回车键来代替单击操作 driver.find_element_by_id("su").send_keys(Keys.ENTER) driver.quit()
以下为常用的键盘操作:
-
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)
-
send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
-
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
-
send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
-
send_keys(Keys.F1) 键盘 F1
-
……
-
send_keys(Keys.F12) 键盘 F12
— 5 —
iframe切换
iframe,又叫浮动帧标记,是内嵌的网页元素,可以将一个html文件嵌入到另一个html文件中显示
对iframe进行操作,需要用到以下三种方法:
switch_to_iframe() 切换到iframe上(未来会被删除,不建议使用)
switch_to.frame() 切换到iframe上
switch_to.default_content() 切换回原主页面
通过如下方式进行切换操作
#定位到iframe
iframe=driver.find_element_by_id("x-URS-iframe")
#切换到iframe
driver.switch_to_frame(iframe)
from selenium import webdriver import time driver = webdriver.Chrome("D:\\tool\selenium\chromedriver.exe") # 隐式等待 driver.implicitly_wait(5) driver.get("D:\\test\script\study\seleniumStu\day3\\test.html") """ 对iframe进行操作,需要用到以下三种方法: switch_to_iframe() 切换到iframe上 switch_to.frame() 切换到iframe上 switch_to.default_content() 切换回原主页面 """ iframe = driver.find_element_by_id("f91fb5bc-bd95-45bf-bd77-977a2afbd25f") driver.switch_to.frame(iframe) driver.find_element_by_id("e4890ded-16e1-4445-bf8e-7f655793f332").send_keys("haha") time.sleep(5) driver.quit()
— 6 —
多标签页切换
在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。WebDriver提供了以下方法
current_window_handle:获得当前标签页句柄
window_handles:返回所有便签页的句柄
switch_to.window(标签页句柄):切换到对应的标签页
关闭标签页使用 close 方法
from selenium import webdriver # 创建浏览器驱动对象 driver = webdriver.Chrome() # 访问网址 driver.get("http://www.baidu.com") # 找到搜索按钮 input_element = driver.find_element_by_id("kw") # 输入搜索内容 input_element.send_keys("松勤\n") # 点击松勤教育官网 driver.find_element_by_css_selector("#\34 > h3 > a > em").click() # 获得当前所有打开的窗口的句柄 all_handles = driver.window_handles for handle in all_handles: driver.switch_to.window(handle) print(driver.title) # 退出浏览器 driver.quit()
— 7 —
补充
#将页面滚动条拖到底部
js="var q=document.documentElement.scrollTop=100000"
driver.execute_script(js)
time.sleep(3)
#将滚动条移动到页面的顶部
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)
time.sleep(3)
#将页面滚动条移动到页面任意位置,改变等于号后的数值即可
js="var q=document.documentElement.scrollTop=50"
driver.execute_script(js)
绵薄之力
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
相关文章
- javaint数组转list集合_数组转int
- SpringBoot常用注解集合「建议收藏」
- java 字符串转集合_字符串转化为 List 集合
- java 集合
- UI自动化平台_ui自动化是什么意思
- 【组合数学】排列组合 ( 集合组合、一一对应模型分析示例 )
- 【Groovy】集合遍历 ( 调用集合的 any 函数判定集合中是否有指定匹配规则的元素 | 代码示例 )
- MongoDB数据库和集合的创建
- Linux实用工具大集合(linux常用软件大全)
- Java Set集合详解:HashSet类、TreeSet 类
- mssql中集合函数的功能完善(mssql的集合函数包括)
- 深入浅出Redis的集合数据类型(redis 集合数据类型)
- sql格式化工具集合
- C#中DataSet转化为实体集合类的方法