Selenium笔记
浏览器:Firfox chrom ie
插件:firebug firepath selenium IDE
Selenium IDE:使用说明
打开网页 open(URL)命令
注释 key word
等待(毫秒) pause
后退 go back
刷新 refresh
最大化 windowmaxmize
单击 click
输入 type
select 下拉列表框
close 关闭
Selenium的安装与Firefox配置https://blog.csdn.net/qq_34908107/article/details/80533338
断言:
断言常被用的4种模式+5种手段
Assert
断言失败的时候,该测试终止
verify
verify断言失败的时候,该测试将继续执行,并将错误计入日显示屏,也就是说允许此当个验证通过,确保应用程序在正确的页面上,提高脚本的伸缩性
waitfor
用于等待某些条件变为真,可以用于AJAX应用程序的测试,如果条件为真,他们将立即成功执行,如果该条件不为真,则将失败并暂停测试,直到超过当前所设定的超时间
一般跟setTimeout时间一起用
store
store定义变量,可以获取页面的相关元素进行判断
5种手段:
Title获取页面的标题
Value获取元素的值
Text获取元素文本信息
Table获取元素的标签
Element获取当前的元素
Css定位https://www.cnblogs.com/surewing/p/7862362.html
css常用的定位方法:
1、find_element_by_css_selector()
2、#id 选择器根据id属性来定位元素
3、.class 选择器,根据class属性来定位元素
4、[attribute='value']根据属性来定位元素
5、element>element根据元素层级来定位 父元素>子元素
xpath
xpath的层级与逻辑定位https://www.cnblogs.com/surewing/p/7862264.html
xpath定位--绝对与相对的定位https://www.cnblogs.com/surewing/p/7862138.html
#加载浏览器驱动
driver = webdriver.Firefox()
#打开网页
driver.get('http://www.baidu.com/')
#关闭浏览器
driver.close() //关闭当前页面
driver.quit() //关闭所有由当前测试脚本打开的页面
#调用html抬头,获取当前窗口的title
driver.title
#窗口最大化
driver.maximize_window()
#自定义窗口大小
driver.set_window_size(400,800)
#刷新
driver.refresh()
#浏览器前进后退
driver.back() //回到上一个页面
driver.forward() //切换到下一个页面
隐式等待
driver.implictly_wiat('秒') #implicity_wait()只针对find的方法有效,对获取界面title是没有效果的
截图并保存成为文件 https://www.cnblogs.com/surewing/p/7867955.html
driver.get_screenshot_as_file(r'路径')
对单个元素进行截图
ele=driver.find_element_by_id('kw')
多窗口切换 https://www.cnblogs.com/surewing/p/7867760.html
获取窗口句柄selenium_index = driver.current_window_handle
跳转窗口 driver.swithch_to.window(selenium_index)
警告弹窗处理 https://www.cnblogs.com/surewing/p/9432230.html
driver.switch_to.alert.accept() #点击OK
driver.switch_to.alert.text # 得到对话框内容
driver.switch_to.alert.dismiss()#点击关闭
driver.switch_to.alert.send_keys()# 输入内容这种就用于上述的图3 的情况
上传文件
send_keys(r"C:\Users\Administrator\Desktop\3.png")
滚动条 https://www.cnblogs.com/surewing/p/7867955.html
js="var action=document.documentElement.scrollTop=10000"
driver.execute_script(js)
获取cookie值 https://www.cnblogs.com/surewing/p/7868037.html
cookie=driver.get_cookies()
验证码cookie跳过 https://www.cnblogs.com/surewing/p/7872704.html
抓包Fidedler passport.baidu.com 中BAIDUID、BDUSS
driver.add_cookie({'name':'BAIDU','value':'值'})
driver.add_cookie({'name':'BDUSS','value':'值'})
driver.refresh()
frame嵌套页面元素的定位 https://www.cnblogs.com/surewing/p/7867478.html
driver.switch_to_frame("search") #XML内查frame值
鼠标操作 https://www.cnblogs.com/surewing/p/7865859.html
from selenium.webdriver.common.action_chains import ActionChains
定位坐标生成对象element
双击操作
element=driver.find_element_by_css_selector("#kw")
ActionChains(driver).double_click(element).perform()
右击操作
ActionChains(driver).context_click(element).perform()
鼠标悬停
ActionChains(driver).move_to_element(element).perform()
键盘操作 https://www.cnblogs.com/surewing/p/7866438.html
from selenium.webdriver.common.keys import Keys
定位元素坐标
搜索框里面的内容进行Ctrl+a的操作,全选
driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'a')
搜索框里面的内容,进行ctrl+c的操作,复制
driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'c')
把刚才复制的内容,粘贴到搜狗的搜索框里面,这里通过CSS定位,使用了CSS定位(#id)来定位的
driver.find_element_by_css_selector("#query").send_keys(Keys.CONTROL,'v')