Python + Selenium WEB自动化

  • 2019-06-26
  • 0
  • 0

一些常用的功能整理.

可使用Selenium IDE进行自动化测试.

使用方法:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #ActionChains鼠标操作类
from selenium.webdriver.common.keys import Keys #keys类操作

# 打开浏览器:
browser = webdriver.Chrome()

# # 若未配置环境变量:
# path = r'C:\Program Files\Google\Chrome\Application\chromedriver.exe'
# browser = webdriver.Chrome(executable_path = path)

# 在指定时间范围等待: 
browser.implicitly_wait(30)

# 设置超时
browser.set_page_load_timeout(30)
browser.set_script_timeout(30)

# 打开url:
browser.get("https://moeclub.org")

# 前进/后退
browser.forward()
browser.back()

# 刷新 
browser.refresh()

# 将浏览器最大化
browser.maximize_window()

# 将设置浏览器为宽480,高800显示
browser.set_window_size(480, 800)

# 关闭浏览器
browser.quit()

# 关闭标签
browser.close()

# 获取浏览器窗口相关信息
browser.title # 当前页面标题
browser.name # 浏览器名
browser.current_url # 返回当前页面url
browser.window_handles # 返回当前浏览器的所有窗口
browser.current_window_handle # 返回当前浏览器的窗口句柄

# 选择窗口
browser.switch_to_window('window_name')

# 截取当前显示的页面并保存
browser.get_screenshot_as_file(r'D:\test.png')

# 定位元素
# 需要先分析源码
text_username = browser.find_element_by_name('username')
text_password = browser.find_element_by_name('password')
form_login = browser.find_element_by_name('formlogin')
# 也可以使用其他方法如xpath,注意转义符
text_username = browser.find_element_by_xpath('//input[@name = \'username\']')
'''
相关方法:
find_element(by='id', value=None)
find_element_by_class_name(name)
find_element_by_css_selector(css_selector)
find_element_by_id(id)
find_element_by_link_text(link_text)
find_element_by_name(name)
find_element_by_partial_link_text(link_text)
find_element_by_tag_name(name)
find_element_by_xpath(xpath)
'''

# 输入值
# send_keys也可以用于上传文件
text_username.send_keys("你的用户名_错误")
text_password.send_keys("你的密码")
'''
相关方法
send_keys(Keys.BACK_SPACE) # 返回键
send_keys(Keys.CONTROL,'a') # Ctrl + A
'''

# 清空输入框,换成正确的用户名
text_username.clear()
text_username.send_keys("你的用户名_正确")

# ----------------鼠标操作--------------------
# 右键单击
ActionChains(browser).context_click(text_username).perform()
# 双击
ActionChains(browser).double_click(text_username).perform()
#执行元素的移动操作
ActionChains(browser).drag_and_drop(text_username, text_password).perform()
# 提交表单
form_login.submit()

# -----------执行JavaScript脚本 --------------
js="var q=document.getElementById(\"user_name\");q.style.border=\"1px solid red\";"
#调用js
browser.execute_script(js)
# eg:
# 将页面滚动条拖到底部
js="var q=document.documentElement.scrollTop=10000"
browser.execute_script(js)

按键补充:

module:selenium.webdriver.common.keys
    class Keys()
    – NULL = u’ue000’
    – CANCEL = u’ue001’ # ^break
    – HELP = u’ue002’
    – BACK_SPACE = u’ue003’
    – TAB = u’ue004’
    – CLEAR = u’ue005’
    – RETURN = u’ue006’
    – ENTER = u’ue007’
    – SHIFT = u’ue008’
    – LEFT_SHIFT = u’ue008’ # alias
    – CONTROL = u’ue009’
    – LEFT_CONTROL = u’ue009’ # alias
    – ALT = u’ue00a’
    – LEFT_ALT = u’ue00a’ # alias
    – PAUSE = u’ue00b’
    – ESCAPE = u’ue00c’
    – SPACE = u’ue00d’
    – PAGE_UP = u’ue00e’
    – PAGE_DOWN = u’ue00f’
    – END = u’ue010’
    – HOME = u’ue011’
    – LEFT = u’ue012’
    – ARROW_LEFT = u’ue012’ # alias
    – UP = u’ue013’
    – ARROW_UP = u’ue013’ # alias
    – RIGHT = u’ue014’
    – ARROW_RIGHT = u’ue014’ # alias
    – DOWN = u’ue015’
    – ARROW_DOWN = u’ue015’ # alias
    – INSERT = u’ue016’
    – DELETE = u’ue017’
    – SEMICOLON = u’ue018’
    – EQUALS = u’ue019’
    – NUMPAD0 = u’ue01a’ # numbe pad keys
    – NUMPAD1 = u’ue01b’
    – NUMPAD2 = u’ue01c’
    – NUMPAD3 = u’ue01d’
    – NUMPAD4 = u’ue01e’
    – NUMPAD5 = u’ue01f’
    – NUMPAD6 = u’ue020’
    – NUMPAD7 = u’ue021’
    – NUMPAD8 = u’ue022’
    – NUMPAD9 = u’ue023’
    – MULTIPLY = u’ue024’
    – ADD = u’ue025’
    – SEPARATOR = u’ue026’
    – SUBTRACT = u’ue027’
    – DECIMAL = u’ue028’
    – DIVIDE = u’ue029’
    – F1 = u’ue031’ # function keys
    – F2 = u’ue032’
    – F3 = u’ue033’
    – F4 = u’ue034’
    – F5 = u’ue035’
    – F6 = u’ue036’
    – F7 = u’ue037’
    – F8 = u’ue038’
    – F9 = u’ue039’
    – F10 = u’ue03a’
    – F11 = u’ue03b’
    – F12 = u’ue03c’
    – META = u’ue03d’
    – COMMAND = u’ue03d’

操作接口:

#操作元素
    clear    #清除元素的内容
    send_keys()    #模拟按键输入
    click()    #点击元素
    submit()    #提交表单
#接口取值
    size    #获取元素的尺寸
    text    #获取元素的文本
    get_attribute(name)    #获取属性值
    location    #获取元素坐标
    page_source    #返回页面源码
    driver.title    #返回页面标题
    current_url    #获取当前页面的URL
    tag_name    #返回元素的tagName
    is_displayed()    #设置该元素是否可见
    is_enabled()    #判断元素是否被启用
    is_selected()    #判断元素是否被选中
#鼠标操作
    context_click(elem)    #右击鼠标点击元素elem,另存为等行为
    double_click(elem)    #双击鼠标点击元素elem,地图web可实现放大功能
    drag_and_drop(source,target)    #拖动鼠标,源元素按下左键移动至目标元素释放
    move_to_element(elem)    #鼠标移动到一个元素上
    click_and_hold(elem)    #按下鼠标左键在一个元素上
    perform()    #在通过调用该函数执行ActionChains中存储行为

技巧用法:

# 获取当前页面的cookies列表
cookie = [item["name"] + "=" + item["value"] for item in broswer.get_cookies()]

评论

还没有任何评论,你来说两句吧