**备注:1、窗口截图 2、警告框处理 3、鼠标事件 4、键盘事件 5、内嵌网页 iframe 6、多标签页 7、下拉框选择 8、文件上传 9、cookie操作 **
一、窗口截图
#1.截取整个屏幕,存放在当前路径下
driver.get_screenshot_as_file('./all.png')
#2.截取单个元素,存放在当前路径下
ele = driver.find_element_by_id("kw")
ele.screenshot('./ele.png')
2、警告框处理
'''1.对话框(确认按钮)'''
ele = driver.find_element_by_id("username").click() # 点击元素会出现警告框
al = driver.switch_to.alert #获得警告框
print(al.text) #返回警告框文字
al.accept() #接受现有警告框
'''2.确认框(确认+取消按钮)'''
ele = driver.find_element_by_id("username").click() # 点击元素会触发警告框
al = driver.switch_to.alert #获得警告框
print(al.text) #返回警告框文字
#al.accept() #接受现有警告框(确认)
al.dismiss() #取消现有警告框(取消)
'''3.提示框(确认、文本输入框)'''
ele = driver.find_element_by_id("username").click() # 点击元素会触发警告框
al = driver.switch_to.alert #获得警告框
print(al.text) #返回警告框文字
#al.dismiss() #取消现有警告框(取消)
al.send_keys("text") #输入文本,警告框看不见输入结果,但是可以发送文本成功
time.sleep(6)
al.accept() #接受现有警告框(确认)
3、鼠标事件
'''鼠标事件,单击双击拖动等'''
from selenium.webdriver.common.action_chains import ActionChains
ele1 = driver.find_element_by_id("id1")
ele2 = driver.find_element_by_id("id2")
# 1、鼠标拖动
ActionChains(driver).drag_and_drop(ele1,ele2).perform()
# 2、右击
ActionChains(driver).context_click(ele2).perform()
# 3、左击(一般元素可直接click,失败后可以用鼠标事件代替)
ActionChains(driver).click(ele2).perform()
# 4、双击
ActionChains(driver).double_click(ele2).perform()
# 5、鼠标悬停
ActionChains(driver).move_to_element(ele2).perform()
4、键盘事件
"""键盘事件"""
from selenium.webdriver.common.keys import Keys
ele = driver.find_element_by_id('kw')
ele.send_keys("特朗普")
# 1、在文本框删除一个字符——退格键
ele.send_keys(Keys.BACK_SPACE)
# 2、全选 Ctrl+a
ele.send_keys(Keys.CONTROL,'a') #可以全选后,退格键全部删除
# 3、
5、内嵌网页 iframe
“”“5、内嵌网页 iframe”""
'''一、、、、、
1、先定位到你想进入的iframe(iframe:nth-child(3)---父元素的第3个子元素且标签为iframe)
2、切换进入这个iframe
3、执行这个页面你想达成的目的
4、执行相关代码后,切出,到主页面
'''
ifra = driver.find_element_by_css_selector('iframe:nth-child(3)')
driver.switch_to.frame(ifra)
driver.find_element_by_id('kw').send_keys('sdsdsdws')
driver.switch_to.default_content()
6、多标签页
"""6、多标签页"""
'''
1、百度搜索张一鸣,点击第一个链接进入第二个标签
2、获取当前所有打开的窗口的句柄(两个)
'''
driver.get("https://www.baidu.com/")
driver.implicitly_wait(6)
driver.find_element_by_id('kw').send_keys('张一鸣\n')
driver.find_element_by_css_selector('#content_left>div:nth-child(2)>h3[class="t c-gap-bottom-small"]>a[href]').click()
'''已经打开了第二个标签页-------------------
1、获取当前所有打开的窗口的句柄,循环进入所有窗口,判断后停留在需要的窗口
2、执行你想执行的内容
'''
all_handles = driver.window_handles
for handle in all_handles:
driver.switch_to.window(handle)
if driver.title == "((北京字节跳动科技有限公司创始人、CEO) - 百度百科":
break
text = driver.find_element_by_css_selector('dl[class="second-know "]').text
print(text)
7、下拉框选择
'''
7、select标签形成的下拉框(下拉框中选择一项option’)
'''
from selenium.webdriver.support.select import Select
#定位到下拉框元素-select标签
ele = driver.find_element_by_id('id')
# 1、根据可视文本选择下拉元素
Select(ele).select_by_visible_text('下拉元素特定文本')
# 2、根据value属性值选择
Select(ele).select_by_value('p')
# 3、根据下标选择,从0开始
Select(ele).select_by_index()
8、文件上传
import win32com.client
driver.get("https://tinypng.com/")
driver.implicitly_wait(6)
#1 、非input标签实现的文件上传功能
driver.find_element_by_css_selector('.icon').click()#弹出选择图片框
time.sleep(5)
sh = win32com.client.Dispatch("WScript.shell")
# 微软拼音,两个回车(注意输入法以及需要回车的次数)
sh.SendKeys('D:\\test-file\\testTest\8.busybox\\123.png')
sh.SendKeys('{ENTER}')
sh.SendKeys('{ENTER}')
#sh.SendKeys('D:\\test-file\\testTest\8.busybox\\123.png\n\n')
#2、input标签实现的文件上传功能
driver.find_element_by_css_selector('input[type="file"]').send_keys(r'D:\test-file\testTest\8.busybox\123.png')
sh.SendKeys("^c", 0)
#通过以上映射关系表,如实现ctrl + F5 强制刷新浏览器页面就比较容易实现
sh.SendKeys("^{F5}", 0) 即可。
9、cookie操作–可绕过登录
'''
9、cookie操作---浏览器本地上存一些信息,根据开发来决定存什么
登录前与登录后分别获取cookies,值肯定不一样
'''
cooks = driver.get_cookies() #获取所有cookie信息
cook = driver.get_cookie('_gid') #获取名为'_gid'的cookie信息
#设置cookie前,清楚原有cookie
driver.delete_all_cookies()
#登录后cookies
cookies = [{'domain': '.tinypng.com',# 'expiry': 1604052985,
'httpOnly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'},
{'domain': '.tinypng.com', #'expiry': 1604139325,
'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.1271260912.1604052926'},
{'domain': '.tinypng.com',# 'expiry': 1667124925,
'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.65614400.1604052926'}]
for cookie in cookies:
driver.add_cookie(cookie)
driver.refresh()