selenium复习
1、WebDriver8 种基本元素定位方式
1)find_element_by_id() 根据 id 属性进行定位 #常用
2)find_element_by_name() 根据 name 元素进行定位
3)find_element_by_class_name() 根据 class 的名字进行定位
4)find_element_by_xpath() #常用
5)find_element_by_css_selector() CSS 属性定位可以比较灵活地选择控件的任意属性,定位方式也会比 xpath 快
6)find_element_by_tag_name() 根据标签名进行定位
7)find_element_by_link_text() 根据完整的超链接文字进行定位
8)find_element_by_partial_link_text() 根据部分超链接文字进行定位
2、elements 复数定位
八种基础的定位方法都有对应的复数形式
1)find_elements_by_id()
2)find_elements_by_name()
3)find_elements_by_class_name()
4)find_elements_by_tag_name()
5)find_elements_by_link_text()
6)find_elements_by_partial_link_text()
7)find_elements_by_xpath()
8)find_elements_by_css_selector()
3、JS 的 5 种定位方式
1)document.getElementById() id 定位
2)document.getElementsByName() name 定位
3)document.getElementsByTagName() tag 定位
4)document.getElementsByClassName() class 定位
5)document.querySelectorAll() css 定位
4、浏览器相关操作
1)driver = webdriver.xxx() 创建浏览器对象
2)driver.maximize_window() 窗口最大化
3)driver.get_window_size() 获取浏览器尺寸
4)driver.set_window_size() 设置浏览器尺寸
5)driver.get_window_position() 获取浏览器位置
6)driver.set_window_position(x,y) 设置浏览器位置
7)driver.close() 关闭当前标签/窗口
8)driver.quit() 关闭所有标签/窗口
5、页面相关操作
driver = webdriver.xxx()
1)driver.get(url) 请求某个 url
2)driver.refresh() 刷新页面操作
3)driver.back() 回退到之前的页面
4)driver.forward() 前进到之后的页面
5)driver.current_url 获取当前访问页面 url
6)driver.title 获取当前浏览器标题
7)driver.get_screenshot_as_png()/get_screenshot_as_file(file) 保存图片
8)driver.page_source 网页源码
6、元素的操作
element=find_elements_by_id("xxxxxx")
1)element.click() 点击操作
2)element.clear() 清空输入框
3)element.send_keys(data) 输入框输入数据
4)element.text 获取文本内容 (既开闭标签之间的内容)
5)element.get_attribute(value) 获取属性值 (获取 element 元素的 value 属性的值)
7、鼠标和键盘操作
鼠标操作需要导入类,见第一部分,然后创建对象 ActionChains(driver),键盘操作导入类
鼠标右击
el = driver.find_element_by_xxx(value)
ActionChains(driver).context_click(el).perform()
鼠标双击
el = driver.find_element_by_xxx(value)
ActionChains(driver).double_click(el).perform()
鼠标悬停
el = driver.find_element_by_xxx(value)
ActionChains(driver).move_to_element(el).perform()
常用键盘操作
1)element=find_elements_by_id("xxxxxx")
2)element.send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
3)element.send_keys(Keys.SPACE) 空格键 (Space)
4)element.send_keys(Keys.TAB) 制表键 (Tab)
5)element.send_keys(Keys.ESCAPE) 回退键(Esc)
6)element.send_keys(Keys.ENTER) 回车键(Enter)
7)element.send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
8)element.send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
9)element.send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
10)element.send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
8、弹出框操作
1)driver.switch_to.alert() 进入到弹出框中
2)driver.accept() 接收警告
3)driver.dismiss() 关闭警告
4)driver.send_keys(data) 发送文本到警告框
9、多标签/多窗口、多表单/多框架切换
多表单/多框架(frame)切换:
1)定位到表单元素,再切换进入
el = driver.find_element_by_xxx(value)
driver.switch_to.frame(el)
2)driver.switch_to.default_content() 跳回最外层的页面
3)driver.switch_to.parent_frame() 跳回上层的页面
多标签/多窗口之间的切换:
1)handles = driver.window_handlers 获取所有窗口的句柄
2)driver.switch_to.window(handles[n]) 通过窗口的句柄进入的窗口
10、Select 下拉框处理
1)Select(elem).select_by_value("年龄") #选择value为年龄的选项 注意:这是元素里面的value,并不是页面显示的值
2)Select(elem).select_by_index(2) #选择第三个选项
3) Select(elem).select_by_visibile_text:通过值选中元素
4) Select(elem).options:返回所有的option选项
5) Select(elem).all_selected_options:返回所有选中的option选项
6) Select(elem).first_selected_option:返回第一个选中的option选项
11、cookies 操作
1)get_cookies() 获取所有 cookies
2)get_cookie(key) 获取 key 对应的值
3)add_cookie(cookie_dict) 设置 cookies
4)delete_cookie(name) 删除指定名称的 cookie
5)delete_all_cookies() 删除所有 cookie
12、等待
1)强制等待:time.sleep(1) #设置强制等待时间,不推荐。
2)隐性等待:
driver.implicitly_wait(10) #相当于设置全局的等待,在定位元素时,对所有元素设置超时时间。
3)显性等待:
WebDriverWait(driver, 6).until(EC.element_to_be_clickable(locator))#明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么久跳出Exception。