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

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 = u’ue000’
  4. – CANCEL = u’ue001’ # ^break
  5. – HELP = u’ue002’
  6. – BACK_SPACE = u’ue003’
  7. – TAB = u’ue004’
  8. – CLEAR = u’ue005’
  9. – RETURN = u’ue006’
  10. – ENTER = u’ue007’
  11. – SHIFT = u’ue008’
  12. – LEFT_SHIFT = u’ue008’ # alias
  13. – CONTROL = u’ue009’
  14. – LEFT_CONTROL = u’ue009’ # alias
  15. – ALT = u’ue00a’
  16. – LEFT_ALT = u’ue00a’ # alias
  17. – PAUSE = u’ue00b’
  18. – ESCAPE = u’ue00c’
  19. – SPACE = u’ue00d’
  20. – PAGE_UP = u’ue00e’
  21. – PAGE_DOWN = u’ue00f’
  22. – END = u’ue010’
  23. – HOME = u’ue011’
  24. – LEFT = u’ue012’
  25. – ARROW_LEFT = u’ue012’ # alias
  26. – UP = u’ue013’
  27. – ARROW_UP = u’ue013’ # alias
  28. – RIGHT = u’ue014’
  29. – ARROW_RIGHT = u’ue014’ # alias
  30. – DOWN = u’ue015’
  31. – ARROW_DOWN = u’ue015’ # alias
  32. – INSERT = u’ue016’
  33. – DELETE = u’ue017’
  34. – SEMICOLON = u’ue018’
  35. – EQUALS = u’ue019’
  36. – NUMPAD0 = u’ue01a’ # numbe pad keys
  37. – NUMPAD1 = u’ue01b’
  38. – NUMPAD2 = u’ue01c’
  39. – NUMPAD3 = u’ue01d’
  40. – NUMPAD4 = u’ue01e’
  41. – NUMPAD5 = u’ue01f’
  42. – NUMPAD6 = u’ue020’
  43. – NUMPAD7 = u’ue021’
  44. – NUMPAD8 = u’ue022’
  45. – NUMPAD9 = u’ue023’
  46. – MULTIPLY = u’ue024’
  47. – ADD = u’ue025’
  48. – SEPARATOR = u’ue026’
  49. – SUBTRACT = u’ue027’
  50. – DECIMAL = u’ue028’
  51. – DIVIDE = u’ue029’
  52. – F1 = u’ue031’ # function keys
  53. – F2 = u’ue032’
  54. – F3 = u’ue033’
  55. – F4 = u’ue034’
  56. – F5 = u’ue035’
  57. – F6 = u’ue036’
  58. – F7 = u’ue037’
  59. – F8 = u’ue038’
  60. – F9 = u’ue039’
  61. – F10 = u’ue03a’
  62. – F11 = u’ue03b’
  63. – F12 = u’ue03c’
  64. – META = u’ue03d’
  65. – COMMAND = u’ue03d’
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注