一,元素的基本操作方法
一,基本操作
1,清空 元素.clear()
2,输入 元素.send_keys("需要输入的内容")
3,点击 元素.click()
二,其它操作--->主要是为了验证实际结果与预期结果是否一致
1,返回元素大小 元素.size
2,获取元素的文本 元素.text
3,获取页面的title driver.title
4,获取当前页面的URL driver.current_url
5,获取属性值 元素.get_attribute("属性名")
6,判断元素是否可见 元素.is_display() 返回布尔值
7,判断元素是否可用 元素.is_enabled()
二鼠标的操作
1鼠标事件的操作步骤:
1)导包:from selenium.webdriver.common.action_chains import ActionChains
2)对类进行实例化
ActionChains(driver).鼠标的操作方法名.perform()
1)鼠标拖拽
ActionChains(driver).drag_and_drop(起始元素,终止元素).perform()
ActionChains(driver).drag_and_drop_by_offset(拖动元素,坐标值,234,231,两个数组成).perform()
案例:
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("E:\web\练习页面\drop.html")
Red=driver.find_element_by_id("div1")
Green=driver.find_element_by_id("div2")
ActionChains(driver).drag_and_drop_by_offset(Red, 583, 205).perform()
2)鼠标悬停
ActionChains(driver).move_to_element(需要悬停操作的元素).perform()
案例:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
A=driver.find_element_by_css_selector('div[id="u1"]>a:nth-child(8)')
ActionChains(driver).move_to_element(A).perform()
3)双击 double_click()
ActionChains(driver).double_click(点击的元素).perform()
4)context_click()右键
ActionChains(driver).context_click(点击的元素).perform()
5)点击鼠标左键 click_and_hold()
ActionChains(driver).click_and_hold(A).perform()
三,键盘的操作
通过selenium来实现快捷键
基本步骤:
1,导包
from selenium.webdriver.common.keys import Keys
2,基本语法
单个键:元素.send_keys(Keys.键名)
组合键:元素.send_keys(Keys.大写的键,"小写的键")--->入ctrl+c 是 元素.send_keys(Key.CONTROL,"c")
3,键盘的基本操作
元素.send_keys(Keys.BACK_SPACE)删除键Backspace
元素.send_keys(Keys.CONTROL,"c")--->复制元素里的文字
元素.send_keys(Keys.CONTROL,"a")--->全选元素里的文字
元素.send_keys(Keys.CONTROL,"v")----->粘贴复制的文字
元素.send_keys(Keys.CONTROL,"x")----->剪切元素里的文字
元素.send_keys(Keys.TAB) ----空格键
元素.send_keys(Keys.ESCAPE)--->ESC键
元素.send_keys(Keys.ENTER)--->回车键
元素.send_keys(Keys.F1)--->F1键
元素.send_keys(Keys.F12)---->F12键
四,下拉菜单的操作
1,二次定位,先定位父元素---父元素=driver.find_element_by_xxx()
定位子元素:子元素=父元素.find_element_by_xxx()
案例:from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get("https://192.168.244.129/ecshop/")
anquan = driver.find_element_by_css_selector('#details-button')
anquan.click()
anquan1 = driver.find_element_by_css_selector('#proceed-link')
anquan1.click()
zc = driver.find_element_by_partial_link_text('免费注册')
zc.click()
select=driver.find_element_by_css_selector('select[name="sel_question"]')
zhi=select.find_element_by_css_selector('option[value="friend_birthday"]')
zhi.click()
2,通过select类来处理下拉菜单
1)导入select 类:from selenium.webdriver.support.select import select
2) 定位下拉菜单元素 元素变量名=driver.find_element_by_xxx()
3)使用select 类,操作下拉菜单
select(元素名).select_by_value('value的值')
例:Select(selectA).select_by_value("sh")
select(元素).select_by_index(索引值)
例:Select(selectA).select_by_index(3)
select(元素).select_by_visible_text('文本内容')
例:Select(selectA).select_by_visible_text('A重庆')
五 滚动条操作
1,用JavaScript 脚本控制滚动条
编写控制滚动条实现的JS代码
js1="window.scrollTo(0,10000)"
js2="window.scrollTO(0,0)"
driver.execute_script(javascript 语句)
案例:打开淘宝网,拉到最下面再拉到最上面
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get('http://www.taobao.com')
js="window.scrollTo(0,10000)"
driver.execute_script(js)
sleep(3)
js1="window.scrollTo(0,0)"
driver.execute_script(js1)
sleep(2)
driver.quit()
2,聚焦元素的位置
1)找到元素 driver.find_element_by....
2)聚焦元素:driver.execute_script(JS代码,元素)
JS代码="arguments[0].srcollIntoView();"
案例:apple=driver.find_element_by_css_selector('#pga')
driver.execute_script("arguments[0].scrollIntoView();",apple)
六 iframe操作
1, 为什么要操作iframe(表单嵌套)?
Frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位;而frame和iframe需要切换进去才能定位到其中的元素。这时就需要通过switch_to.frame()方法将当前定位的主体切换为 frame/iframe表单的内嵌页面中。
2,怎么判断所操作的元素在iframe里面?
1)当使用正确的元素定位方式无法定位到某个元素时,就考虑元素是否在iframe里面
2)iframe使用场景:登录输入框,富文本框,后台管理表单
3,找iframe标签:1,F12的element的最下面查找iframe关键字
2,也可以在已选择元素向上查找
4,进入iframe --->如果有2层iframe,就用进入2次,必须从最外层一层一层进入
driver.switch_to.frame(参数)
参数:
1,当iframe标签有固定的id或者name属性值的时候,参数等于id或者name的属性值
2,如果iframe标签没有id或name属性,或者id以及name的属性不固定,参数等于定位的iframe的元素(要先定位iframe元素)
3,当明确知道iframe的索引值,参数就等于索引值,索引从0开始.
5,操作iframe内的元素
输入,点击
6,退出iframe
driver.switch_to.parent_frame()
driver.switch_to.default_content()
七 弹窗处理
1,定位触发弹窗出现的元素
2,获取弹窗/进入弹窗
alert=driver.switch_to.alert
3.1,对弹窗做操作--->此方法只用于浏览器自带的弹窗
获取弹窗文本内容
alert.text
点击弹窗的确认按钮
alert.accept()
点击弹窗的取消按钮
alert.dismiss()
在弹窗中输入文字
alert.send_keys('输入内容')
案例:from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get("E:\web\练习页面\注册A.html")
driver.find_element_by_id('alerta').click()
sleep(2)
alert=driver.switch_to.alert
alert.accept()
3.2 自定义弹窗操作--->通过JS操作
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.itsource.cn/')
js='document.getElementById("side-bar").style.display="none";'
driver.execute_script(js)
JS1='document.getElementById("div_company_mini").style.display="none";'
driver.execute_script(JS1)
八 多窗口切换
1,获取当前窗口句柄
handle=driver.current_window_handle
2,获取所有窗口句柄
handles=driver.window_handles
3,进入新窗口
driver.switch_to.window(handles[索引号])
4,退出新窗口,退回之前的窗口
driver.switch_to.window(handle)