selenium5:1、窗口截图 2、警告框处理 3、鼠标事件 4、键盘事件 5、内嵌网页 iframe 6、多标签页 7、下拉框选择 8、文件上传 9、cookie操作

**备注: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()
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页