python自动化常用函数
导入time模块
import time
导入ActionChains模块(鼠标)
from selenium.webdriver.common.action_chains import ActionChains
导入Keys模块(键盘)
from selenium.webdriver.common.keys import Keys
导入Select模块(下拉框)
from selenium.webdriver.support.select import Select
导入WebdriverWait
from selenium.webdriver.support.wait import WebDriverWait
导入EC
from selenium.webdriver.support import expected_conditions as ec
浏览器基本操作(如打开浏览器、输入地址、网页最大化等)
一、打开网站
从selenium里面导入webdriver模块
from selenium import webdriver
打开谷歌浏览器
driver = webdriver.Chrome()
打开百度
driver.get("http://www.baidu.com")
二、设置等待时间
设置等待时间2秒,也可以是小数,单位是秒
time.sleep(2)
三、页面刷新
有时候页面操作后,数据可能没有及时同步,需要重新刷新
可以模拟刷新页面操作,相当于浏览器的刷新按钮
driver.refresh()
四、前进和后退
当打开俩个页面时,浏览器可以返回上一页,也可以切换到下一页
上一页
driver.back()
下一页
driver.forward()
五、设置窗口大小
设置窗口大小为600*800
drive.set_window_size(600, 800)
将窗口最大化
driver.maximize_window()
六、截屏
截屏后设置制定的保存路径+文件名称+后缀
driver.get_screenshot_as_file("C:\\Users\\Administrator\\Desktop\\test.jpg")
七、退出浏览器
close用于关闭当前窗口,打开窗口多的时候就可以用close关闭部分窗口
driver.close()
quit用于结束进程,关闭所有窗口
driver.quit()
Selenium元素定位方法:name定位
driver.find_element_by_name("username").clear()
driver.find_element_by_name("username").send_keys("admin")
Selenium元素定位方法:xpath定位
driver.find_element_by_xpath("/html/body/div[3]/form/div[3]/div/input").send_keys("admin.syzg")
Selenium元素定位方法:class_name定位
driver.find_element_by_class_name("btn").click()
Selenium元素定位方法:id定位
driver.find_element_by_id("sidebar_softs").click()
Selenium元素定位方法:link_text定位
driver.find_element_by_link_text(" 文档和资源").click()
Selenium元素定位方法:partial_link_text定位
driver.find_element_by_partial_link_text("添").click()
Selenium元素定位方法:css_selector定位
driver.find_element_by_css_selector("#res_title").send_keys("测试文档")
Selenium复数元素定位方法
# 1、id定位
als = driver.find_elements_by_id('i1')
als[0].send_keys('id定位')
# 2、class定位
bls = driver.find_elements_by_class_name('classname')
bls[0].send_keys('class定位')
# 3、css selector定位
cls = driver.find_elements_by_css_selector('input')
cls[2].send_keys('定位到第三个input输入框')
# 4、name定位:按照标签中的name属性定位
dls = driver.find_elements_by_name('name')
dls[0].send_keys('name定位')
# 5、link_text 文本内容定位
els = driver.find_elements_by_link_text('跳转')
els[0].click()
# 6、partial_link_text 模糊文本内容匹配
fls = driver.find_elements_by_partial_link_text('示例')
fls[0].click()
# 7、xpath 定位
gls = driver.find_elements_by_xpath('//input')
gls[4].send_keys('xpath 定位')
# 8、tag_name 标签名定位
hls = driver.find_elements_by_tag_name('input')
hls[5].send_keys('tag_name 标签名定位')
Selenium之鼠标模拟操作
使用前需要导入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
ActionChains类提供鼠标常用方法:
# perform()执行所有ActionChains中存储的行为
# context_click()右击
# double_click()双击
# drag_and_drop()拖到
# move_to_element()鼠标悬停
1.鼠标右击
定位到需要右击的元素
right_click = driver.find_element_by_id("xx")
对定位的元素执行右击操作
ActionChains(driver).context_click(right_click).perform()
2.鼠标双击
定位到需要双击的元素
double_click = driver.find_element_by_id("xx")
ActionChains(driver).double_click(double_click).perform()
3.鼠标拖动
开始位置:定位到元素的原位置
source = driver.find_element_by_id("xx")
结束位置:定位到元素要移动的目标位置
target = driver.find_element_by_id("xx")
执行元素的托放操作
ActionChains(driver).drag_and_drop(source, target).perform()
4.鼠标悬停
定位到要悬停的元素
move = driver.find_element_by_id("xx")
对定位的元素执行悬停操作
ActionChains(driver).move_to_element(move).perform()
Selenium之键盘模拟操作
# send_keys(Keys.CONTROL,'a') #全选(Ctrl+A)
# send_keys(Keys.CONTROL,'c') #复制(Ctrl+C)
# send_keys(Keys.CONTROL,'x') #剪切(Ctrl+X)
# send_keys(Keys.CONTROL,'v') #粘贴(Ctrl+V)
回车键 Keys.ENTER
删除键 Keys.BACK_SPACE
空格键 Keys.SPACE
制表键 Keys.TAB
回退键 Keys.ESCAPE
刷新键 Keys.F5
导入Keys模块
from selenium.webdriver.common.keys import Keys
举例:全选操作
driver.find_element_by_id('kw').send_keys('AAAAAAAAAAAA')
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a') # 注意这里组合键的输入。
time.sleep(10)
driver.quit()
举例:回车键操作
driver.get("http://cn.bing.com/")
driver.find_element_by_id('sb_form_q').send_keys('selenium')
driver.find_element_by_id("sb_form_go").send_keys(Keys.ENTER) # 通过回车键来代替鼠标的左键
driver.quit()
submit使用
submit函数用于对信息进行提交,也可以使用click()进行代替,submit()要求提交对象是一个表单,click()更强调事件的独立性
Selenium之页面中下拉框的处理
导入Select模块
from selenium.webdriver.support.select import Select
根据索引选择
Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_index("3")
根据value值选择
Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_value("3线")
根据文本值选择
Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_visible_text("3线")
Selenium之操作下拉滚动条方法
竖向滚动条拉到最底
js = "var q = document.documentElement.scrollTop = 10000"
driver.execute_script(js)
横向滚动条控制
js = "window.scrollTo(100,400);"
driver.execute_script(js)
Selenium之窗口切换
每个浏览器窗口都有一个唯一的属性句柄(handle)来表示当前窗口句柄、所有窗口句柄
窗口切换
导入WebdriverWait
from selenium.webdriver.support.wait import WebDriverWait
打开百度首页
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
获取当前窗口句柄
main_windows = driver.current_window_handle
print(main_windows)
进入注册
driver.find_element_by_link_text("登录").click()
这里加一个显示等待,不然有时会报找不到“立即注册这个元素”
WebDriverWait(driver, 20).until(lambda x: x.find_element_by_link_text("立即注册")).click()
获取当前所有打开的窗口句柄
all_windows = driver.window_handles
print(all_windows)
切换进注册页面
for handle in all_windows:
if handle != main_windows:
driver.switch_to.window(handle)
获取注册页面窗口句柄
register_windows = driver.current_window_handle
print(register_windows)
切换回百度首页
driver.switch_to.window(main_windows)
print(driver.title)
元素定位Selenium消息框处理(alert、confirm、prompt)
alert弹出个提示框(确定)
1、定位alert弹出框
点击页面元素,触发alert弹出框
driver.find_element_by_xpath('//*[@id="alert"]').click()
等待alert弹出框可见
WebDriverWait(driver, 20).until(ec.alert_is_present())
从html页面切换到alert弹框
alert = driver.switch_to.alert
获取alert的文本内容
print(alert.text)
选择“确定”
alert.accept()
confirm弹出个确认框(确定、取消)
2:定位confirm弹出框
driver.find_element_by_xpath('//*[@id="confirm"]').click()
time.sleep(3)
WebDriverWait(driver, 20).until(ec.alert_is_present())
alert = driver.switch_to.alert
print(alert.text)
接受–选择“取消”
alert.dismiss()
prompt弹出个输入框(确定、取消)
3:定位prompt弹出框
driver.find_element_by_id("prompt").click()
time.sleep(3)
WebDriverWait(driver, 20).until(ec.alert_is_present())
alert = driver.switch_to.alert
alert.send_keys("test")
time.sleep(5)
print(alert.text)
alert.dismiss()
alert.accept()
标签:定位,python,driver,element,click,模块,自动化,alert,find
来源: https://blog.csdn.net/qq_38375929/article/details/113864146