|
阅读:6696回复:0
python selenium 自动化测试 — 相关操作
导入相关的函数: from selenium import webdriver
启动浏览器: driver= webdriver.Firefox() 当然也可以换成 IE 或 Chrome 定位元素: driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").click() 退出并关闭窗口的每一个相关的驱动程序:driver.quit() 关闭当前窗口: driver.close() 元素的定位 · id · name · class name · link text · partial link text · tag name · xpath · css selector <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off"> 添加等待时间 有时候为了保证脚本运行的稳定性,需要脚本中添加等待时间。 需要引入 time 包 Import time time.sleep(0.3) #休眠 0.3 秒 通过添加 implicitly_wait() 方法就可以方便的实现智能等待 driver.implicitly_wait(30) selenium.webdriver.remote.webdriver.implicitly_wait(time_to_wait) 隐式地等待一个无素被发现或一个命令完成; 这个方法每次会话只需要调用一次 time_to_wait: 等待时间 打印信息 print (driver.title) # 把页面 title 打印出来 打印 URL print ("now access %s" %(url)) 浏览器最大化 driver.maximize_window() #将浏览器最大化显示 设置浏览器宽、高 driver.set_window_size(480, 800) 操作浏览器的前进、后退 browser.back() browser.forward() 为了使过程让你看得更清晰,在每一步操作上都可以加了 print 和 sleep 操作测试对象 一般来说,webdriver 中比较常用的操作对象的方法有下面几个 click 点击对象 send_keys 在对象上模拟按键输入 clear 清除对象的内容,如果可以的话 submit 提交表单 text 用于获取元素的文本信息 get_attribute 获得属性值 键盘事件 键盘按键用法 键盘组合键用法 send_keys() 输入中文乱码问题 from selenium import webdriver from selenium.webdriver.common.keys import Keys #需要引入 keys 包 import os,time // tab 的定位相相于清除了密码框的默认提示信息,等同上面的 clear() driver.find_element_by_id("user_name").send_keys(Keys.TAB) time.sleep(3) driver.find_element_by_id("user_pwd").send_keys("123456") // 通过定位密码框,enter(回车)来代替登陆按钮 driver.find_element_by_id("user_pwd").send_keys(Keys.ENTER) // 也可定位登陆按钮,通过 enter(回车)代替 click() driver.find_element_by_id("login").send_keys(Keys.ENTER) // 输入框输入内容 driver.find_element_by_id("kw").send_keys("selenium") time.sleep(3) #ctrl+a 全选输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a') time.sleep(3) #ctrl+x 剪切输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') time.sleep(3) #输入框重新输入内容,搜索 driver.find_element_by_id("kw").send_keys(u"安妮 anan") driver.find_element_by_id("su").click() 鼠标事件 ActionChains 类 context_click() 右击 double_click() 双击 drag_and_drop() 拖动 from selenium.webdriver.common.action_chains import ActionChains 定位一组元素 定位选取这组元素的共同属性, 通过一个循环来控制每一个控件 多层框架/窗口定位 switch_to_frame() switch_to_window() 先找到到 ifrome1(id = f1) browser.switch_to_frame("f1") 再找到其下面的 ifrome2(id =f2) browser.switch_to_frame("f2") WebDriverWait(driver, 10) 10 秒内每隔 500 毫秒扫描 1 次页面变化,当出现指定的元素后结束。 is_displayed() 该元素是否用户可以见 class ActionChains(driver) driver: 执行用户操作实例 webdriver 生成用户的行为。 所有的行动都存储在 actionchains 对象。通过 perform()存储的行为。 move_to_element(menu) 移动鼠标到一个元素中,menu 上面已经定义了他所指向的哪一个元素 to_element:元件移动到 perform() 执行所有存储的行为 上传文件操作 脚本要与 upload_file.html 同一目录 file_path = 'file:///' + os.path.abspath('upload_file.html') driver.get(file_path) 定位上传按钮,添加本地文件 driver.find_element_by_name("file").send_keys('D:\selenium_use_c ase\upload_file.txt') time.sleep(2) alert、confirm、prompt 的处理 text 返回 alert/confirm/prompt 中的文字信息 accept 点击确认按钮 dismiss 点击取消按钮,如果有的话 send_keys 输入值,这个 alert\confirm 没有对话框就不能用了,不然会报错 cookie 处理 driver.get_cookies() 获得 cookie 信息 add_cookie(cookie_dict) 向 cookie 添加会话信息 delete_cookie(name) 删除特定(部分)的 cookie delete_all_cookies() 删除所有 cookie 作者: 心悦飞飞 链接:http://www.imooc.com/article/17968 来源:慕课网 |
|