Python3.5 + Selenium3.4 + Webdriver 自动化测试
Python3.5 + Selenium3.4 + Webdriver 自动化测试
Selenium Driver下载地址
selenium 下载地址:https://docs.seleniumhq.org/download/
selenium 源码github:https://github.com/SeleniumHQ/selenium
chromedriver 下载地址:http://chromedriver.storage.googleapis.com/index.html
1. 浏览器的操作
driver.maximize_window() # 将浏览器最大化显示 driver.set_window_size(480, 800) # 设置浏览器宽480、高800显示 driver.back() # 浏览器后退 driver.forward() # 浏览器前进 driver.capabilities['version'] # 打印浏览器version的值
2. 简单对象的定位
能通过id和name的,尽量不要用xpath和css
driver.find_element_by_id() driver.find_element_by_name() driver.find_element_by_class_name() driver.find_element_by_tag_name() driver.find_element_by_link_text() driver.find_element_by_partial_link_text() driver.find_element_by_xpath() driver.find_element_by_css_selector()
3. 操作测试对象
driver.find_element_by_id("xx").clear() # 用于清除输入框的默认内容 driver.find_element_by_id("xx").send_keys("xx") # 用于在一个输入框里输入 xx 内容 driver.find_element_by_id("xx").click() # 用于单击一个按钮 driver.find_element_by_id("xx").submit() # 提交表单 driver.driver.find_element_by_id("xx").size # 返回元素的尺寸 driver.find_element_by_id("xx").text # 获取元素文本 # 返回元素的属性值,可以是id、name、type或元素拥有的其它任意属性 如果是input的,可以通过获取value值获得当前输入的值 driver.find_element_by_id("xx").get_attribute('value') # 返回元素的结果是否可见,返回结果为True或False driver.find_element_by_id("kxx").is_displayed()
4. 鼠标事件
# 引入ActionChains类 from selenium.webdriver.common.action_chains import ActionChains # 定位鼠标元素 mouse =driver.find_element_by_xpath("xx") # 鼠标右击 ActionChains(driver).context_click(mouse).perform() # 对定位到的元素执行鼠标右键操作 # 鼠标双击 ActionChains(driver).double_click(mouse).perform() # 对定位到的元素执行鼠标双击操作 # 鼠标移动上元素上 ActionChains(driver).move_to_element(mouse).perform() # 对定位到的元素执行鼠标移动到上面的操作 # 按下鼠标左键 ActionChains(driver).click_and_hold(mouse).perform() # 对定位到的元素执行鼠标左键按下的操作 # 鼠标拖放 element = driver.find_element_by_name("xxx") # 定位元素的原位置 target = driver.find_element_by_name("xxx") # 定位元素要移动到的目标位置 ActionChains(driver).drag_and_drop(element, target).perform()#执行元素的移动操作
5. 键盘事件
# 引入Keys类包 from selenium.webdriver.common.keys import Keys driver.find_element_by_id("xx").send_keys(Keys.BACK_SPACE) # 删除键(BackSpace) driver.find_element_by_id("xx").send_keys(Keys.SPACE) # 空格键(Space) driver.find_element_by_id("xx").send_keys(Keys.TAB) # 制表键(Tab) driver.find_element_by_id("xx").send_keys(Keys.ESCAPE) # 回退键(Esc) driver.find_element_by_id("xx").send_keys(Keys.ENTER) # 回车键(Enter) driver.find_element_by_id("xx").send_keys(Keys.CONTROL,'a') # 全选(Ctrl+A) driver.find_element_by_id("xx").send_keys(Keys.CONTROL,'c') # 复制(Ctrl+C) driver.find_element_by_id("xx").send_keys(Keys.CONTROL,'x') # 剪切(Ctrl+X) driver.find_element_by_id("xx").send_keys(Keys.CONTROL,'v') # 粘贴(Ctrl+V) # 输入空格键+“python” driver.find_element_by_id("kw").send_keys(Keys.SPACE) driver.find_element_by_id("kw").send_keys("python")
6. 打印信息
title = driver.title
url = driver.current_url
通过获得页面的 title 、URL 地址,页面上的标识性信息(如,登录成功的“欢迎,xxx” 信息)来判断用例执行成功。
7. 设置等待时间
import time # 导入time包 driver.implicitly_wait(30) # 添加智能等待 time.sleep(5) # 添加固定休眠时间 # 导入WebDriverWait 包 from selenium.webdriver.support.ui import WebDriverWait # 详细格式如下: WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None) driver - WebDriver 的驱动程序(Ie,Firefox,Chrome 或远程) timeout - 最长超时时间,默认以秒为单位 poll_frequency- 休眠时间的间隔(步长)时间,默认为 0.5 秒 ignored_exceptions - 超时后的异常信息,默认情况下抛 NoSuchElementException 异常。 element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(“someId”)) is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)). until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())
8. 定位frame中的元素
driver.switch_to.frame("mainscreen") # 切入到id="mainscreen"的嵌套中 driver.switch_to.default_content() # 这句话是退出原来的嵌套回到原来的主文档 driver.switch_to.parent_frame() # 返回上一级frame
9. 浏览器多窗口
# 获得当前窗口 nowhandle=driver.current_window_handle # 获得所有窗口 allhandles=driver.window_handles for handle in allhandles: if handle != nowhandle: driver.switch_to_window(handle) # 到最后窗口口 driver.close() # 关闭最后窗口
10. alert/confirm/prompt 处理
driver.switch_to_alert().text # 获取网页上的警告信息 driver.switch_to_alert().accept # 接收警告信息 driver.switch_to_alert().dismiss # 取消对话框(如果有的话) driver.switch_to_alert().send_keys("xx") # 输入值(如果有的话)
11. 下拉框处理
from selenium.webdriver.support.ui import Select Select(driver.find_element_by_id('language')).select_by_value(Value)
12. 文件上传
driver.find_element_by_name("file").send_keys('D:\\selenium_use_case\upload _file.txt') #,send_keys()发送一个本地的文件路径。从而达 到上传文件的目的。
13. cookie消息处理
driver.get_cookies() # 获得所有cookie信息 driver.get_cookie(name) # 返回特定 name 有 cookie 信息 driver.add_cookie({'name':'key-aaaaaaa', 'value':'value-bbbb'}) # 向cookie的name 和value添加会话信息。 driver.delete_cookie("CookieName") driver.delete_cookie("CookieName") # 删除特定(部分)的 cookie 信息 driver.delete_all_cookies() # 删除所有cookie
参考推荐:
Python + Selenium + Firefox 使用代理 auth 的用户名密码授权
Python + Selenium + Chrome 使用代理 auth 的用户名密码授权
Selenium Webdriver 以代理proxy方式启动firefox,ie,chrome
Selenium 设置 webdriver 启动浏览器、设置profile、加载插件
Python + Selenium2 + Chrome 爬取网页
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2018-07-13 05:03:38
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!