1、浏览器操作

1)浏览器最大化
driver.maximize_window()
2)设置浏览器宽和高
driver.set_window_size(400,800)
3)控制浏览器前进、后退
driver.forward()
driver.back()

2、简单对象的定位

find_element_by_id()—-唯一
find_element_by_name()—-唯一
find_element_by_linx_text()—-文字超链接,文字定位
find_element_by_partial_link_text()—-文字超链接,部分文字定位
find_element_by_class_name()
find_element_by_tag_name())—-标签定位
find_element_by_xpath()
find_element_by_css_selector()

3、操作对象元素

clear()—————清除内容,如默认用户名和密码
click()————– 模拟鼠标点击操作
send_keys()——向输入框输入
submit()————提交表单

4、WebElement接口常用方法

size——————–返回元素尺寸
text———————-获取元素文本信息
get_attribute(name)————-获取元素某个属性值
is_displayde———————–该元素用户是否可见

5、鼠标事件

ActionChains类用来操作鼠标事件
context_click()——————鼠标右击
double_click()——————鼠标双击
click()—————————–鼠标点击
click_and_hold()—————按住鼠标左键不动
move_to_element(目标元素)————————移动到某个元素
move_by_offset(xoffset,yoffset)——————–移动到某个坐标
drag_and_drop(source,target)——将元素从起点source移动到终点target
drag_and_drop_by_offset(source,xoffset,yoffset)——-按照坐标移动
release() 在某个元素上释放鼠标

ActionChains的执行原理
调用ActionChains方法的时候,用户行为不会立刻执行,而是将所有操作放在一个队列中,当执行perform()方法时,按照放入队列的顺序先进先出执行
如:
ActionChains(driver).context_click(操作对象).perform()

6、键盘事件

Keys类操作键盘事件
常用的组合键
send_keys(Keys.CONTROL,‘a’)—————-全选
send_keys(Keys.CONTROL,‘c’)—————-复制
send_keys(Keys.CONTROL,‘v’)—————-粘贴
send_keys(Keys.CONTROL,‘x’)—————-剪切
常用的非组合键
send_keys(Keys.ENTER)——————————–回车键
send_keys(Keys.BACK_SPACE)———————-删除键
send_keys(Keys.SPACE)——————————–空格键
send_keys(Keys.TAB)————————————制表键
send_keys(Keys.ESCAPE)——————————回退键
send_keys(Keys.F5)—————————————刷新键

7、获得页面URL和title

1)获得当前页面title,判断页面跳转是否符合预期
title = driver.title
2)获得当前URL,一般用来测试重定向
url = driver.current_url

8、设置等待时间

sleep():设置固定休眠时间。Python的time包提供sleep方法
implicitly_wait():webdriver提供的一个隐性等待的时间,在一个时间段内等待页面加载完成最长时间等待,超时则抛出异常
WebDriverWait():webdriver提供的另一个方法,在设置时间内,默认每隔一段时间去检测页面元素是否存在,如果超出设置时间检测不到则抛出异常。

9、定位一组对象

find_elements返回的是一个list
定位一组对象,一般应用于下列场景:
批量操作对象,比如将页面上的CheckBox都选上
1)find_elements_by_tag_name()
2)find_element_by_css_selector()

10、定位frame中的对象

针对frame嵌套的情况,使用switch_to.frame(id/name/xpath)切换到被嵌套的frame中

11、多窗口处理

要想在多个窗口之间切换,首先要获得每一个窗口的唯一标识符号(句柄)。通过获得的句柄来区别分不同的窗口,从而对不同窗口上的元素进行操作
driver.current_window_handle———————-获得当前窗口的句柄
driver.window_handles——————————–获得所有窗口的句柄
driver.switch_to_handle(“句柄”)———————切换回句柄所属的窗口
driver.close()———————————————关闭当前窗口
driver.quit()———————————————–关闭所有窗口

12、下拉菜单处理

先定位到下拉菜单,再定位选项
1)下拉菜单需点击才能显示选项
有两次点击动作,第一次点击下拉菜单,第二次点击选项
2)下拉菜单不需点击,鼠标放上去就会显示选项,则可以使用move_to_element()方法定位
3)针对下拉菜单标签是select的
导入Select类:from selenium.webdriver.support.select import Select

select_by_index(index)—————————根据index属性定位选项,index从0开始
select_by_value(value)—————————根据value属性定位
select_by_visible_text(text)———————-根据选项文本值来定位
first_selected_option()—————————-选择第一个选项
deselect_by_index(index)—————————根据index属性清除选定的选项,index从0开始
deselect_by_value(value)—————————根据value属性
deselect_by_visible_text(text)———————-根据选项文本值
deselect_all()——————————————–清除所有选项

13、上传文件

上传过程一般是打开一个系统的window窗口,从窗口选择文件添加,一般会卡在如何操作Window窗口。
1)上传控件标签为input
只要定位上传按钮,通过send_keys()添加文件路径就可以了。
2)上传控件标签为非input
可以借助第三方工具:Autolt

14、下载文件

webdriver允许设置默认下载路径,从而可以跳过下载弹窗提示
1)chrome下载
思路:实例化一个option对象
设置配置,并加载到option中
启动浏览器,点击下载链接
download.default_directory:设置下载路径
profile.default_content_settings.popups:设置为 0 禁止弹出窗口
2)Firefox下载
对于Firefox,需要我们设置其FirefoxProfile:
browser.download.dir:指定下载路径
browser.download.folderList:设置成2表示使用自定义下载路径;设置成0表示下载到桌面;设置成1表示下载到默认路径
browser.download.manager.showWhenStarting:在开始下载时是否显示下载管理器
browser.helperApps.neverAsk.saveToDisk:对所给出文件类型不再弹出框进行询问
Firefox需要针对每种文件类型进行设置,这里需要我们查询对应文件的MIME类型,可以查看MIME 参考手册进行查询

15、调用js和控制浏览器滚动条

1)webdriver提供了execute_script(script,*args)方法调用js
2)控制浏览器滚动条
window.scrollTo()方法用于设置浏览器窗口滚动条的水平和垂直位置。方法的第一个参数表示水平的左间距,第二个参数表示垂直的上边距;通过javascript设置浏览器窗口的滚动条位置
js=“window.scrollTo(100,450);”
driver.execute_script(js)

16、处理cookie

driver.get_cookies()——————————-获得所有cookie
driver.get_cookie(name)————————-获得name属性的cookie
driver.add_cookie(cookie_dic)—————–添加cookie(cookie格式为字典)
driver.delete_cookie(name)———————删除特定cookie
driver.delete_all_cookies()———————-删除所有cookie