[关闭]
@king 2015-10-16T15:09:07.000000Z 字数 3796 阅读 4214

Python + selenium自动化测试

Python


资料

selenium webdriver (python)第三版:http://down.51cto.com/data/1985688

selenium IDE:
http://www.cnblogs.com/fnng/archive/2011/10/23/2222157.html
http://www.cnblogs.com/fnng/p/3300788.html


安装与配置

1.安装selenium: pip install selenium

2.安装ChromeDriver
官网:https://sites.google.com/a/chromium.org/chromedriver/
下载:http://chromedriver.storage.googleapis.com/index.html
若使用其他浏览器测试须另行下载对应的Driver。
下载后放到Chrome安装目录下,并把该目录添加到path环境变量


用法

  1. from selenium import webdriver
  2. from selenium.webdriver.common.action_chains import ActionChains #ActionChains鼠标操作类
  3. from selenium.webdriver.common.keys import Keys #keys类操作
  4. # 打开浏览器:
  5. browser = webdriver.Chrome()
  6. # # 若未配置环境变量:
  7. # path = r'C:\Program Files\Google\Chrome\Application\chromedriver.exe'
  8. # browser = webdriver.Chrome(executable_path = path)
  9. # 在指定时间范围等待:
  10. browser.implicitly_wait(30)
  11. # 设置超时
  12. browser.set_page_load_timeout(30)
  13. browser.set_script_timeout(30)
  14. # 打开url:
  15. browser.get(r"http://www.你的网站.com")
  16. # 前进/后退
  17. browser.forward()
  18. browser.back()
  19. # 刷新
  20. browser.refresh()
  21. # 将浏览器最大化
  22. browser.maximize_window()
  23. # 将设置浏览器为宽480,高800显示'
  24. browser.set_window_size(480, 800)
  25. # 关闭浏览器
  26. browser.quit()
  27. # 关闭标签
  28. browser.close()
  29. # 获取浏览器窗口相关信息
  30. browser.title # 当前页面标题
  31. browser.name # 浏览器名
  32. browser.current_url # 返回当前页面url
  33. browser.window_handles # 返回当前浏览器的所有窗口
  34. browser.current_window_handle # 返回当前浏览器的窗口句柄
  35. # 选择窗口
  36. browser.switch_to_window('window_name')
  37. # 截取当前显示的页面并保存
  38. browser.get_screenshot_as_file(r'd:\backup\140591\桌面\首页图片\test.png')
  39. # 定位元素
  40. # 需要先分析源码
  41. text_username = browser.find_element_by_name('username')
  42. text_password = browser.find_element_by_name('password')
  43. form_login = browser.find_element_by_name('formlogin')
  44. # 也可以使用其他方法如xpath,注意转义符
  45. text_username = browser.find_element_by_xpath('//input[@name = \'username\']')
  46. '''
  47. 所有相关方法:
  48. find_element(by='id', value=None)
  49. find_element_by_class_name(name)
  50. find_element_by_css_selector(css_selector)
  51. find_element_by_id(id)
  52. find_element_by_link_text(link_text)
  53. find_element_by_name(name)
  54. find_element_by_partial_link_text(link_text)
  55. find_element_by_tag_name(name)
  56. find_element_by_xpath(xpath)
  57. '''
  58. # 输入值
  59. # send_keys也可以用于上传文件
  60. text_username.send_keys("你的用户名_错误")
  61. text_password.send_keys("你的密码")
  62. '''
  63. 相关方法
  64. send_keys(Keys.BACK_SPACE) # 返回键
  65. send_keys(Keys.CONTROL,'a') # Ctrl + A
  66. '''
  67. # 清空输入框,换成正确的用户名
  68. text_username.clear()
  69. text_username.send_keys("你的用户名_正确")
  70. # ----------------鼠标操作--------------------
  71. # 右键单击
  72. ActionChains(browser).context_click(text_username).perform()
  73. # 双击
  74. ActionChains(browser).double_click(text_username).perform()
  75. #执行元素的移动操作
  76. ActionChains(browser).drag_and_drop(text_username, text_password).perform()
  77. # 提交表单
  78. form_login.submit()
  79. # -----------执行JavaScript脚本 --------------
  80. js="var q=document.getElementById(\"user_name\");q.style.border=\"1px solid red\";"
  81. #调用js
  82. browser.execute_script(js)
  83. # eg:
  84. # 将页面滚动条拖到底部
  85. js="var q=document.documentElement.scrollTop=10000"
  86. browser.execute_script(js)

按键补充:

  1. module:selenium.webdriver.common.keys
  2. class Keys()
  3. NULL = uue000
  4. CANCEL = uue001 # ^break
  5. HELP = uue002
  6. BACK_SPACE = uue003
  7. TAB = uue004
  8. CLEAR = uue005
  9. RETURN = uue006
  10. ENTER = uue007
  11. SHIFT = uue008
  12. LEFT_SHIFT = uue008 # alias
  13. CONTROL = uue009
  14. LEFT_CONTROL = uue009 # alias
  15. ALT = uue00a
  16. LEFT_ALT = uue00a # alias
  17. PAUSE = uue00b
  18. ESCAPE = uue00c
  19. SPACE = uue00d
  20. PAGE_UP = uue00e
  21. PAGE_DOWN = uue00f
  22. END = uue010
  23. HOME = uue011
  24. LEFT = uue012
  25. ARROW_LEFT = uue012 # alias
  26. UP = uue013
  27. ARROW_UP = uue013 # alias
  28. RIGHT = uue014
  29. ARROW_RIGHT = uue014 # alias
  30. DOWN = uue015
  31. ARROW_DOWN = uue015 # alias
  32. INSERT = uue016
  33. DELETE = uue017
  34. SEMICOLON = uue018
  35. EQUALS = uue019
  36. NUMPAD0 = uue01a # numbe pad keys
  37. NUMPAD1 = uue01b
  38. NUMPAD2 = uue01c
  39. NUMPAD3 = uue01d
  40. NUMPAD4 = uue01e
  41. NUMPAD5 = uue01f
  42. NUMPAD6 = uue020
  43. NUMPAD7 = uue021
  44. NUMPAD8 = uue022
  45. NUMPAD9 = uue023
  46. MULTIPLY = uue024
  47. ADD = uue025
  48. SEPARATOR = uue026
  49. SUBTRACT = uue027
  50. DECIMAL = uue028
  51. DIVIDE = uue029
  52. F1 = uue031 # function keys
  53. F2 = uue032
  54. F3 = uue033
  55. F4 = uue034
  56. F5 = uue035
  57. F6 = uue036
  58. F7 = uue037
  59. F8 = uue038
  60. F9 = uue039
  61. F10 = uue03a
  62. F11 = uue03b
  63. F12 = uue03c
  64. META = uue03d
  65. COMMAND = uue03d
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注