一、元素常用操作

1. clear()            清除文本

2. send_keys()        模拟输入

3. click()            单击元素

4.get_attribute 获取元素属性

5.driver.close() 关闭当前窗口

6.driver.quite() 关闭所有窗口,结束driver运行

  1. from selenium import webdriver
  2. from time import sleep
  3. import os
  4.  
  5. driver=webdriver.Chrome()
  6. # 窗口最大化
  7. driver.maximize_window()
  8.  
  9. # os.getcwd()用法:执行文件(***.py文件)与html文件在同一目录下
  10. url='file:///' + os.getcwd()+'/html/注册A.html'
  11. driver.get(url)
  12.  
  13. username=driver.find_element_by_id('userA')
  14. username.send_keys('admin')
  15. sleep(3)
  16. # 清除文本框内容
  17. username.clear()
  18.  
  19. # 获取元素属性
  20. print(username.get_attribute('placeholder'))
  21.  
  22. sleep(3)
  23. driver.quit()

常用方法

二、WebDriver操作鼠标键盘操作

鼠标操作:

1. 导包:from selenium.webdriver.common.action_chains import ActionChains
2. 实例化ActionChains对象:Action=ActionChains(driver)

说明:在WebDriver中将操作鼠标的方法封装在ActionChains类中

(1)context_click() 右击 --> 此方法模拟鼠标右键点击效果
(2)double_click() 双击 --> 此方法模拟鼠标双击效果
(3)drag_and_drop() 拖动 --> 此方法模拟鼠标拖动效果
(4)move_to_element() 悬停 --> 此方法模拟鼠标悬停效果
(5)perform() 执行 --> 此方法用来执行以上所有鼠标方法

  1. # coding="utf-8"
  2.  
  3. from selenium import webdriver
  4. from selenium.webdriver.common.action_chains import ActionChains
  5. from time import sleep
  6. from selenium.webdriver.common.alert import Alert
  7. from time import time
  8.  
  9. # driver = webdriver.Firefox()
  10. driver = webdriver.Chrome()
  11. url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
  12.  
  13. driver.get(url)
  14. # 切换到目标元素所在的frame
  15. driver.switch_to.frame("iframeResult")
  16. # 确定拖拽目标的起点
  17. source = driver.find_element_by_id("draggable")
  18. # 确定拖拽目标的终点
  19. target = driver.find_element_by_id("droppable")
  20. # 形成动作链接
  21. actions = ActionChains(driver)
  22. actions.drag_and_drop(source, target)
  23.  
  24. # 执行
  25. actions.perform()
  26. sleep(5)
  27. driver.quit()

鼠标操作

键盘操作:

导包:from selenium.webdriver.common.keys import Keys

ActionChains实现方法:
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').\
key_up(Keys.CONTROL).perform()

模拟组合按键操作:

1. send_keys(Keys.BACK_SPACE)删除键(BackSpace) 
2. send_keys(Keys.SPACE)空格键(Space) 
3. send_keys(Keys.TAB)制表键(Tab) 
4. send_keys(Keys.ESCAPE)回退键(Esc) 
5. send_keys(Keys.ENTER)回车键(Enter) 
6. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A) 
7. send_keys(Keys.CONTROL,'c')复制(Ctrl+C)
8. send_keys(Keys.CONTROL,'v')粘贴(Ctrl+V)
7. send_keys(Keys.CONTROL,'x')剪切(Ctrl+X)

  1. from selenium import webdriver
  2. from time import sleep
  3. import os
  4. # 导包
  5. from selenium.webdriver.common.keys import Keys
  6.  
  7. driver=webdriver.Chrome()
  8. driver.maximize_window()
  9. url='file:///' + os.getcwd()+'/html/注册A.html'
  10. driver.get(url)
  11.  
  12. '''
  13. 需求:
  14. 1). 输入用户名:admin1,暂停2秒 删除1
  15. 2). 全选用户名:admin 暂停2秒
  16. 3). 复制用户名:admin 暂停2秒
  17. 4). 粘贴到密码框 暂停2秒
  18. 5). 关闭浏览器
  19. '''
  20.  
  21. # 定位用户名编辑框
  22. element=driver.find_element_by_id("userA")
  23. # 定位密码编辑框
  24. plassword=driver.find_element_by_id('passwordA')
  25. # 输入用户名
  26. element.send_keys("admin1")
  27. # 删除1
  28. element.send_keys(Keys.BACK_SPACE)
  29. # 全选
  30. element.send_keys(Keys.CONTROL,'a')
  31. # 复制
  32. # element.send_keys(Keys.CONTROL,'c')
  33.  
  34. # 剪切
  35. element.send_keys(Keys.CONTROL,'x')
  36.  
  37. # 粘贴
  38. plassword.send_keys(Keys.CONTROL,'v')
  39.  
  40. sleep(3)
  41. driver.quit()

键盘操作

模拟键盘单个按键操作

send_keys(Keys.F12)

send_keys(Keys.ENTER)

三、操作下拉列表 select方法

1. select_by_index() --> 根据option索引来定位,从0开始
2. select_by_value() --> 根据option属性 value值来定位
3. select_by_visible_text() --> 根据option显示文本来定位

  1. # 导入Webdrive包
  2. from selenium import webdriver
  3. from time import sleep
  4. import os
  5.  
  6. # 导入select类
  7. from selenium.webdriver.support.select import Select
  8. # 实例化浏览器对象
  9. driver=webdriver.Chrome()
  10. url='file:///' + os.getcwd()+'/html/注册A.html'
  11. driver.get(url)
  12.  
  13. '''
  14. 定位option方式:
  15. find_elements_xxx()
  16. tag_name:option--演示
  17. css selector--演示
  18. Xpath
  19. '''
  20. # 第一种方法:使用tag_name
  21. '''
  22. options=driver.find_elements_by_tag_name("option")
  23. for el in options:
  24. if el.text=="A上海":
  25. sleep(2)
  26. #点击
  27. el.click()
  28. for el in options:
  29. if el.get_attribute("value")=="cq":
  30. sleep(2)
  31. #点击
  32. el.click()
  33. for el in options:
  34. if el.text=="A广州":
  35. sleep(2)
  36. #点击
  37. el.click()
  38. '''
  39. # 第二种方法-select类
  40. # 第一步实例化Select
  41. select=Select(driver.find_element_by_css_selector("#selectA"))
  42.  
  43. sleep(2)
  44. select.select_by_visible_text('A上海')
  45. sleep(2)
  46. select.select_by_value("sh")
  47. sleep(2)
  48. select.select_by_index(2)
  49.  
  50. #打印所有的选中项文本
  51. for option in select.all_selected_options:
  52. print(option.text)
  53.  
  54. sleep(2)
  55. driver.quit()

下列列表

四、多窗口切换

说明:在WebDriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法;
(句柄:英文handle,窗口的唯一识别码)

方法:
1). driver.current_window_handle --> 获取当前窗口句柄
2). driver.window_handles --> 获取所有窗口句柄
3). driver.switch_to.window(handle) --> 切换指定句柄窗口

  1. # 导入Webdrive包
  2. from selenium import webdriver
  3. from time import sleep
  4. import os
  5.  
  6. # 实例化浏览器对象
  7. driver=webdriver.Chrome()
  8. url='file:///' + os.getcwd()+'/html/注册实例.html'
  9. driver.get(url)
  10. '''
  11. 1. 获取注册实例.html当前窗口句柄
  12. 2. 点击注册实例.html页面中注册A页面
  13. 3. 获取所有窗口句柄
  14. 4. 遍历判断窗口句柄并切换到注册A页面
  15. 5. 操作注册A页面元素,注册信息
  16. '''
  17. # 第一步获取当前窗口句柄
  18. cur_handle=driver.current_window_handle
  19. print('默认打开的窗口:',driver.window_handles)
  20. print('第一个窗口:',driver.current_window_handle)
  21.  
  22. # 定位-点击注册A页面
  23. driver.find_element_by_css_selector("#ZCA").click()
  24.  
  25. # 第三步:获取所有窗口句柄
  26. all_handles=driver.window_handles
  27. print('当前所有句柄',all_handles)
  28.  
  29. driver.switch_to_window(all_handles[1])
  30. sleep(2)
  31. driver.close()
  32. print('关闭一个以后,打开的窗口:',driver.window_handles)
  33.  
  34. driver.switch_to_window(all_handles[1])
  35. sleep(1)
  36. driver.close()
  37. driver.switch_to_window(all_handles[0])
  38.  
  39. # 第四步:遍历(只有两个窗口)
  40. for handle in all_handles:
  41. print("遍历窗口handle为:",handle)
  42. if handle !=cur_handle:
  43. driver.switch_to.window(handle)
  44. # 填写注册A-注册信息
  45. driver.find_element_by_css_selector("#userA").send_keys("admin")
  46. driver.find_element_by_css_selector("#passwordA").send_keys("")
  47. driver.find_element_by_css_selector("#telA").send_keys("")
  48. driver.find_element_by_css_selector("#emailA").send_keys("123@qq.com")
  49.  
  50. sleep(2)
  51. driver.quit()

多窗口切换

Selenium3+python自动化008-常用操作的更多相关文章

  1. Selenium3+python自动化007-Selenium常用定位方法

    自动化测试只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%:操 ...

  2. 二叉树的python可视化和常用操作代码

    二叉树是一个重要的数据结构, 本文基于"二叉查找树"的python可视化 pybst 包, 做了一些改造, 可以支持更一般的"二叉树"可视化. 关于二叉树和二叉 ...

  3. selenium3+python自动化50-环境搭建(firefox)

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  4. selenium3+python自动化50-环境搭建(firefox)【转载】

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  5. Python数据类型及常用操作

    Python字符串类型 1.用途: 用来记录有描述性的状态.比如:人名,地址等. 2.定义方式: 创建字符串非常简单,在‘ ’,“ ”,‘’‘ ’‘’内一填写一系列的字符例如:msg='hello' ...

  6. Python字符串的常用操作学习

    >>> name = "I love my job!" >>> name.capitalize() #首字母大写 'I love my job! ...

  7. Python集合的常用操作

    字典常用的就是,他的去重. set集合是python的一个基本数据类型. set中的元素是不重复的.⽆无序的.⾥面的元素必须是可hash的(int, str, tuple,bool). 我们可以这样来 ...

  8. python os 模块常用操作

    python 2.7 os 常用操作 官方document链接 文件和目录 os.access(path, mode) 读写权限测试 应用: try: fp = open("myfile&q ...

  9. 初识python: 字符串常用操作

    直接上代码示例: #!/user/bin env python # author:Simple-Sir # time:20180914 # 字符串常用操作 name = 'lzh lyh' print ...

随机推荐

  1. VMware无法安装故障总结

    暂时遇到如下问题,并按此步骤可以解决,后续如有其它相关问题将继续更新: 1.无法获得 VMCI 驱动程序的版本: 句柄无效.如下图: 找到.vmx后缀配置文件 将如下白标""TRU ...

  2. iptables 实现内网转发上网

    介绍 通过iptables做nat转发实现所有内网服务器上网. 操作 首先开启可以上网的服务器上的内核路由转发功能.这里我们更改/etc/sysctl.conf 配置文件. [root@web1 /] ...

  3. 用 Vue 做一个简单的购物app

    前言 最近在学习Vue的使用.看了官方文档之后,感觉挺有意思的.于是着手做了一个简单的购物app.h5 与原生 app 交互的原理这是我第一次在这个网站上写分享,如有不当之处,请多多指教. 一整个项目 ...

  4. Keil

    Keil C51 V9.00 即09年发布的最新版本uVision 4,版本外观改变比较大,可以使用以前的注册文件.如果全新安装,在VISTA或者WIN 7系统下,请使用管理员方式运行,然后注册即可无 ...

  5. Firefox配置Fiddler

    Fiddler: Toos->Telerik Fiddler Options->HTTPS->Capture HTTPS CONNECTs Toos->Telerik Fidd ...

  6. Spring Cloud-hystrix(六)

    作用 防止 多个服务相互交互时某个服务运行缓慢导致调用方线程挂起,高并发情况下 导致挂起线太多 引起调用方的服务不可用 能够在服务发生故障或者通过断路器监控向调用方返回一个错误 而不是长时间的等待 S ...

  7. 洛谷 P2633 Count on a tree

    P2633 Count on a tree 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中last ...

  8. Thread和ThreadGroup

    Thread和ThreadGroup 学习了:https://www.cnblogs.com/yiwangzhibujian/p/6212104.html  这个里面有Thread的基本内容: htt ...

  9. JS 滚动条事件

    当滚动条滚动到最底部出发事件: $(window).scroll(function(){ if($(document).height()-$(this).scrollTop()-$(this).hei ...

  10. UI 经常用法总结之--- UIWindow UIView (不断更新中)

     UIWindow (UIView) 1.创建一个uiwindow对象 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScr ...