selenium知识
作者:互联网
***
自动化:
自动化的目的不是为了发现bug
版本不稳定不能做自动化
不是所有功能系统都适合做自动化
***
什么项目适合做自动化测试?
需求稳定,不会频繁变更
研发和测试周期长,需要频繁执行回归测试
需要在多种平台上重复运行相同测试的场景
某些测试项目通过手工测试无法实现,或者手工成本太高
被测软件的开发较为规范,能够保证系统的可测试性
****
定位方式:
dd.find_element_by_id("html标签的id属性值")
................by_name("html标签的name属性值")
................by_css_selector("html标签的css样式选择器")
................by_xpath("html标签的路径")
................by_link_text("html标签超链接标签内容")
...............by_partial_link_text("html标签超链接标签部分但必须是唯一且连续的内容")
................by_class_name("html标签的class属性值")【了解】
................by_tag_name("html标签的标签名")【了解】
常用操作:
文本框,密码框,文本域:
清空:
dd.find_element_by_....("....").clear()
输入:
dd.find_element_by_.....("....").send_keys("输入内容")
单选按钮,复选框,按钮:
点击:
dd.find_element_by_......("....").click()
下拉框:
选择:Select需要导入
Select(定位到的一个具体的下拉框).select_by_visible_text("option标签内容")
........................................................select_by_index(option标签索引位置)
........................................................select_by_value("option的value属性值")
隐式等待:
dd.implicitly_wait(时间秒):如果页面没有加载完成最多等待时间
强制等待时间:
Time.sleep(3)
dd=webdriver.Firefox() #打开浏览器
dd.get(url):打开url对应页面
定位方式:(注意element后有s)
dd.find_elements_by_id("html标签的id属性值")
.................by_name("html标签的name属性值")
.................by_css_selector("html标签的css样式选择器")
.................by_xpath("html标签的路径")
.................by_link_text("html标签超链接标签内容")
.................by_class_name("html标签的class属性值")【了解】
.................by_tag_name("html标签的标签名")【了解】
一次定位到多个页面控件,返回list类型,每个元素都是一个具体的页面控件
切换焦点到弹出框:
dd.switch_to_alert().dismiss():切焦点到弹出框,点击取消
dd.switch_to_alert().accept():切焦点到弹出框,点击确定
dd.switch_to.alert()
实际结果的获取方式: 用于断言
页面标题:dd.title
self.assertEqual("登录-然之协同",self.d.title)
标签内容:定位到标签.text
st=self.d.find_element_by_xpath("html/body/div[2]/div/div/div[1]/div").text
self.assertEqual("登录失败,请检查您的成员名或密码是否填写正确。",st)
弹出框提示信息: dd.switch_to_alert().text
切换焦点到frame/iframe: 两种写法
dd.switch_to_frame("frame的id/name属性值")
dd.switch_to.frame("frame的id/name属性值")
切焦点回到默认
# driver.switch_to_default_content()
# driver.switch_to.default_content()
复选框:
定位到一个具体的复选框.is_selected():返回是否被选择,如果是返回True,否则返回False
.is_enabled():用于存储input、select等元素的可编辑状态,可以编辑返回true,否则返回false
.is_displayed():这里的存在不是肉眼看到的存在,而是html代码的存在。某些情况元素的visibility为hidden或者display属性为none,我们在页面看不到但是实际是存在页面的一些元素
常用浏览器操作:
dd.window_handles: 返回打开浏览器窗口标识,list类型,每个元素都是一个具体的浏览器标识
切焦点到弹出窗口:
dd.switch_to_window(具体窗口标识)
dd.back():后退
dd.forward():前进
dd.refresh():刷新
dd.close():关闭当前窗口
dd.quit():关闭所有窗口
常用键盘操作:
定位到一个文件框.send_keys(Keys.ENTER): Enter回车键
..........................(Keys.CONTROL,"a") 全选
..........................(Keys.CONTROL,"c") 复制
..........................(Keys.CONTROL,"v") 粘贴
..........................(Keys.CONTROL,"x") 剪切
..........................(Keys.BACK_SPACE) Backspace回删键
常用鼠标操作:
#左键
ActionChains(dd).click(定位到的一个具体的页面控件).perform()
#右键
ActionChains(dd).context_click(定位到的一个具体的页面控件).perform()
双击
ActionChains(dd).double_click(定位到的一个具体的页面控件).perform()
光标悬浮、悬停
ActionChains(dd).move_to_element(定位到的一个具体的页面控件).perform()
#拖拽到某个坐标后松开
ActionChains(dd).drag_and_hold_by_offset(元素,x坐标,y坐标).perform()
#移动到距某个元素多少距离的位置
ActionChains(dd).move_to_element_with_offset(元素一,x坐标,y坐标).perform()
#拖拽到某个元素后松开
ActionChains(dd).drag_and_hold(元素一,元素二).perform()
下面三个可以组合使用------可用于拖动验证码
#按住不放
ActionChains(dd).click_and_hold(定位到的一个具体的页面控件).perform()
#鼠标移动到当前坐标位置
ActionChains(dd).move_by_offset(x坐标,y坐标).perform()
#在某个元素位置松开左键
ActionChains(dd).release (定位到的一个具体的页面控件).perform()
滚动条:
滚动条拖动到最下
js="var q=document.documentElement.scrollTop=10000"
dd.execute_script(js)
滚动条拖动到最上
js="var q=document.documentElement.scrollTop=0"
dd.execute_script(js)
若浏览器为chrome
js = “var q=document.body.scrollTop=0”
driver.execute_script(js)
浏览器安装在非默认路径下:
1:找到浏览器profile文件路径
rr=r"C:\Users\Administrator\AppData\Local\Mozilla\Firefox\Profiles\h8m1kt8z.default"
2:profile=webdriver.FirefoxProfile(rr)
3:dd=webdriver.Firefox(profile)
dd.get("http://www.baidu.com")
非Firefox浏览器:
1.浏览器驱动放在c:/python34/下
2:
webdriver.Ie()
webdriver.Chrome()
标签:name,ActionChains,标签,dd,知识,selenium,html,页面 来源: https://www.cnblogs.com/bokeyuan4778/p/13970744.html